使用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。
作者:祁俊辉
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。