Saturday, May 19, 2012

关于匿名发送电子邮件

2009-03-07 by zhiwei  

这几天在研究怎么写个自动发送电子邮件的小程序,偶然的发现在新浪的SMTP不验证sender,于是就可以用任意电子邮件地址发送邮件了(这里的任意并不是所有的,有部分邮件地址是不能发的)。方法很简单的,我在网上找了一个JSP编写的发送电子邮件代码,自己稍作修改,再装上个tomcat-apache就可以了(要想那个JSP代码的朋友可以给我发邮件,我可以send it to you)。既然JSP的可以,我想ASP和PHP写的也应该可以,因为原理是同样的。用JSP写的源码中须要用自己的新浪邮箱和密码,只须将sender改为任意的地址就行了,很简单。

在网上和monyer聊天,说到这个匿名发送电子邮件问题,当时他说地球人都知道,真晕,我还以为这是我“个人专利”呢,真是太孤陋寡闻了。他给我发了一个网页,在这里填写一个发件人,一个收件人地址,邮件标题和正文就可以发送了。很简单的。

其实,发件人地址并不一定是真正的sender,一封电子邮件的信头源文件里才有真正的sender,所以呢,那些心里有些不正常想法的朋友们要注意了,匿名邮件用来戏弄一下朋友同学还是可以的,要是用来行骗那可就要当心了。话不多说了,这里就是网址,快快体验一下吧:xeye.us/lab/fakemail/index.php

以下是 send.jsp的源码。其实这个程序并不是真正的匿名发送电子邮件,只不过是用一个伪造的邮箱地址发过罢了。邮件的真正发件人在信头源文件里呢。一般人是看不出来的。这个匿名发送电子邮件只是利用了一些电子邮件提供商(新浪)发送邮件不验证sender 来实现的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<%@ page     contentType="text/html;charset=gb2312" %>  
<%request.setCharacterEncoding("gb2312");%>  
<%@ page     import="java.util.*,javax.mail.*"%>  
<%@ page     import="javax.mail.internet.*"%>  
<html>  
<head>  
<meta     http-equiv="Content-Type"     content="text/html;     charset=gb2312">  
<title>发送成功</title>  
</head>  
<body>  
<%  
    try{  
        //从html表单中获取邮件信息  
        String     tto="XXX@126.com"; //收件人地址 
        String     ttitle="邮件标题";  
        String     tcontent="邮件内容。";  
        Properties     props=new     Properties();//也可用Properties     props     =     System.getProperties();    
        props.put("mail.smtp.host","smtp.sina.com");//存储发送邮件服务器的信息  
        props.put("mail.smtp.auth","true");//同时通过验证  
        Session     s=Session.getInstance(props);//根据属性新建一个邮件会话  
        s.setDebug(true);  
        MimeMessage message=new MimeMessage(s);//由邮件会话新建一个消息对象  
        //设置邮件  
        InternetAddress     from=new     InternetAddress("XXX@XXX。com");//发件人地址  
        message.setFrom(from);//设置发件人  
        InternetAddress     to=new     InternetAddress(tto);  
        message.setRecipient(Message.RecipientType.TO,to);// 设置收件人,并设置其接收类型为TO  
        message.setSubject(ttitle);//设置主题  
        message.setText(tcontent);//设置信件内容  
        message.setSentDate(new     Date());//设置发信时间  
        //发送邮件  
        message.saveChanges();//存储邮件信息  
        Transport     transport=s.getTransport("smtp");  
        transport.connect("smtp.sina.com","sinauser","usersina");//以 smtp方式登录邮箱,sinauser为新浪邮箱帐号,usersina为密码
        transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有  
        //已设好的收件人地址  
        transport.close();  
%>  
    <div     align="center">  
    <p><font     color="#FF6600">发送成功!</font></p>  
    <p>  
    <a     href="send.jsp">再发一封</a>     </p>  
    </div>  
<%  
    }catch(MessagingException     e){  
        out.println(e.toString());  
    }  
%>  
</body>  
</html>

更新:目前新浪已经修复该bug,所以这个方法已经失效。

© 2009, chenzhiwei.net. 版权所有.
本文永久链接:http://chenzhiwei.net/2009/03/send-anonymous-email/

Comments

6 Responses to “关于匿名发送电子邮件”
  1. mengxintong 说道:

    你好,我现在急需用JSP编写的发送电子邮件代码,希望你能发给我一份,谢谢!

  2. 万象幻境 说道:

    朋友你好,拜读了您的匿名发送电子邮件,觉得非常有意思,能否把ASP的代码赐给我一份?非常感激,呵呵 小弟邮箱是:net00@126.com

  3. shiping 说道:

    嗨,志伟。我在做一个可以自动发邮件的网页,不知道如何开始做起。能把你的code发给我做参考吗?
    我的邮箱是 acceleratedman@gmail.com
    谢谢

  4. admin 说道:

    朋友,你好。代码已经给你发过去了。学习愉快哦。。。

  5. admin 说道:

    已经将源码发到你邮箱里了。

Speak Your Mind