欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

试一下JAVAMAIL

程序员文章站 2022-06-04 14:34:55
...

试了一下用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