使用Java发邮件

 1 import java.io.UnsupportedEncodingException;
 2 import java.security.GeneralSecurityException;
 3 import java.util.Properties;
 4 import javax.mail.BodyPart;
 5 import javax.mail.Message;
 6 import javax.mail.Multipart;
 7 import javax.mail.Session;
 8 import javax.mail.Transport;
 9 import javax.mail.internet.InternetAddress;
10 import javax.mail.internet.MimeBodyPart;
11 import javax.mail.internet.MimeMessage;
12 import javax.mail.internet.MimeMultipart;
13 import com.sun.mail.util.MailSSLSocketFactory;
14 
15 public class mymail {
16     
17     private String host = "smtp.qq.com"; // smtp服务器
18     private String from = "textsim@foxmail.com"; // 发件人地址
19     private String to = "qce.hui@qq.com"; // 收件人地址
20     private String pwd = "***********"; // 密码(使用授权码)
21     private String subject = "文本相似度检测系统--注册验证码"; // 邮件标题
22     
23     public void send() {
24         Properties props = new Properties();
25         
26         // 设置发送邮件的邮件服务器的属性(这里使用腾讯的smtp服务器)
27         props.put("mail.smtp.host", host);
28         // 需要经过授权,也就是有用户名和密码的校验,这样才能通过验证(一定要有这一条)
29         props.put("mail.smtp.auth", "true");
30         
31         // 开启SSL加密,否则会失败
32         try {
33             MailSSLSocketFactory sf;
34             sf = new MailSSLSocketFactory();
35             sf.setTrustAllHosts(true);
36             props.put("mail.smtp.ssl.enable", "true");
37             props.put("mail.smtp.ssl.socketFactory", sf);
38         } catch (GeneralSecurityException e1) {
39             System.out.println("QQ邮箱SSL加密开启失败!");
40         }
41         
42         // 用刚刚设置好的props对象构建一个session
43         Session session = Session.getDefaultInstance(props);
44         
45         // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
46         // 用(你可以在控制台(console)上看到发送邮件的过程)
47         session.setDebug(true);
48         
49         // 用session为参数定义消息对象
50         MimeMessage message = new MimeMessage(session);
51         try { 
52             // 设置自定义发件人昵称
53             String nick = "";
54             try {
55                 nick = javax.mail.internet.MimeUtility.encodeText("TextSim");
56             } catch (UnsupportedEncodingException e) {
57                 System.out.println("QQ邮箱设置自定义发件人昵称错误!");
58             }
59             // 加载发件人地址
60             message.setFrom(new InternetAddress(nick + " <"+from+">"));
61             // 加载收件人地址
62             message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
63             // 加载标题
64             message.setSubject(subject);
65             
66             // 向multipart对象中添加邮件的内容
67             Multipart multipart = new MimeMultipart();
68             
69             // 设置邮件的文本内容
70             BodyPart contentPart = new MimeBodyPart();
71             contentPart.setText("测试一下,看看能不能发送成功,您的验证码是:667542");
72             multipart.addBodyPart(contentPart);
73             
74             // 将multipart对象放到message中
75             message.setContent(multipart);
76             // 保存邮件
77             message.saveChanges();
78             // 发送邮件
79             Transport transport = session.getTransport("smtp");
80             // 连接服务器的邮箱
81             transport.connect(host, from, pwd);
82             // 把邮件发送出去
83             transport.sendMessage(message, message.getAllRecipients());
84             transport.close();
85             System.out.println("发送成功");
86         } catch (Exception e) {
87             System.out.println("发送失败");
88             e.printStackTrace();
89         }
90     }
91     
92     public static void main(String[] args) {
93         mymail cn = new mymail();
94         cn.send();
95     }
96 }

这里是使用QQ邮箱发送的,代码已测试过了,可以发送。需要的包都在https://pan.baidu.com/s/1eT0yVN8。

posted @ 2018-02-12 21:27  祁俊辉  阅读(202)  评论(0编辑  收藏  举报