试一下JAVAMAIL

试了一下用java来发邮件,竟然可以那么简单就能冒充别人,邮件协议真的是不安全。

 

下面说一下过程:

想用java发邮件,必须有一个mail.jar 的包,在netbeans里添加一个库就叫mail 吧,把那个jar添加到库里,这样以后就可以直接添加这个库了。

在项目里这个库。

 

import javax.mail.*;
import java.util.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 

javamail首先需要连接服务器,要用到 Session 这个类,

Session.getInstance([Properties]);

 其中properties 存放的是键值对,用 put 方法把连接信息放进去,主要有服务器地址、用户名,如:

String host = "127.0.0.1";
ps.put("mail.stmp.host",host);

//如果需要验证
props.setProperty("mail.smtp.host", "smtp.sina.com");
props.setProperty("mail.smtp.user", "txc........");
props.setProperty("mail.smtp.auth",  "true");

 如果设置了验证当然要提供密码了,比如想让你的新浪邮件发信,先让设置新浪邮箱把协议打开。然后,Session要这样取得:

 
Session session = Session.getDefaultInstance(props, auth);

 其中auth 是 Authenticator 类,来包含用户名和密码。它需要重载一个方法(也许session通过这个方法来取得密码)

Authenticator auth = new Authenticator(){
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("[email protected]", "......");
            }

 这样就建立连接了,然后用 Message 类来产生一个邮件,

 
Message msg = new MimeMessage(session);

 然后填写这个邮件的信息

 
msg.setFrom(new InternetAddress("[email protected]"));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]") );
msg.setSubject("你好,同学!");
msg.setSentDate(new Date());
msg.setText(msgText);

 mesgText里面存着邮件的正文。但是发现了没,setfrom可以随便写发信人地址,我就把我们学校的图书馆地址写到这里面,给所有同学发了一个“注销图书卡”的信……太坏了……

//worldterminator 原处,转载请注明此处

好了现在把它发出去!

 
Transport.send(msg);

 

 

刚才说到可以连接本地邮件服务器,只要把 host 地址改成"127.0.0.1"就行了,用户名密码都省了。但是需要建一个服务器,我用的是argooft mail server(老师教的,非原创),配置里面注意改一下DNS Server 就行了。

服务器建好了,狂发垃圾邮件吧^_^

 

附件里带有mail.jar包和mail server

你可能感兴趣的:(Netbeans)