JAVA代码发送邮件示例和解释
JAVA代码发送邮件示例和解释
涂宗勋 发表于2年前
JAVA代码发送邮件示例和解释
  • 发表于 2年前
  • 阅读 17
  • 收藏 1
  • 点赞 2
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

下载和上传附件、发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,好在昨晚终于走通代码成功以163邮箱发送邮件到qq邮箱,以下是相关代码,具体解释可以参考代码中注释:

[java] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. package test;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Date;  
  5. import java.util.List;  
  6. import java.util.Properties;  
  7. import java.util.regex.Matcher;  
  8. import java.util.regex.Pattern;  
  9. import javax.mail.Address;  
  10. import javax.mail.Authenticator;  
  11. import javax.mail.BodyPart;  
  12. import javax.mail.Message;  
  13. import javax.mail.PasswordAuthentication;  
  14. import javax.mail.Session;  
  15. import javax.mail.Transport;  
  16. import javax.mail.internet.InternetAddress;  
  17. import javax.mail.internet.MimeBodyPart;  
  18. import javax.mail.internet.MimeMessage;  
  19. import javax.mail.internet.MimeMultipart;  
  20. import com.sun.mail.util.MailSSLSocketFactory;  
  21.   
  22. ///**  
  23. // *   
  24. // * @author zengyuan  
  25. // * @date  Jan 15, 2016 - 9:55:48 AM  
  26. // * @Description 邮件发送测试类  
  27. // */  
  28. public class sendMailTest {  
  29.     public static void main(String[] args) throws Exception {  
  30.         // 配置信息  
  31.         Properties pro = new Properties();  
  32.         pro.put("mail.smtp.host", "smtp.163.com");  
  33.         pro.put("mail.smtp.auth", "true");  
  34.         // SSL加密  
  35.         MailSSLSocketFactory sf = null;  
  36.         sf = new MailSSLSocketFactory();  
  37.         // 设置信任所有的主机  
  38.         sf.setTrustAllHosts(true);  
  39.         pro.put("mail.smtp.ssl.enable", "true");  
  40.         pro.put("mail.smtp.ssl.socketFactory", sf);  
  41.         // 根据邮件的会话属性构造一个发送邮件的Session,这里需要注意的是用户名那里不能加后缀,否则便不是用户名了  
  42.         //还需要注意的是,这里的密码不是正常使用邮箱的登陆密码,而是客户端生成的另一个专门的授权码  
  43.         MailAuthenticator authenticator = new MailAuthenticator("tuzongxun123",  
  44.                 "客户端授权码");  
  45.         Session session = Session.getInstance(pro, authenticator);  
  46.         // 根据Session 构建邮件信息  
  47.         Message message = new MimeMessage(session);  
  48.         // 创建邮件发送者地址  
  49.         Address from = new InternetAddress("tuzongxun123@163.com");  
  50.         // 设置邮件消息的发送者  
  51.         message.setFrom(from);  
  52.         // 验证收件人邮箱地址  
  53.         List<String> toAddressList = new ArrayList<>();  
  54.         toAddressList.add("1160569243@qq.com");  
  55.         StringBuffer buffer = new StringBuffer();  
  56.         if (!toAddressList.isEmpty()) {  
  57.             String regEx = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";  
  58.             Pattern p = Pattern.compile(regEx);  
  59.             for (int i = 0; i < toAddressList.size(); i++) {  
  60.                 Matcher match = p.matcher(toAddressList.get(i));  
  61.                 if (match.matches()) {  
  62.                     buffer.append(toAddressList.get(i));  
  63.                     if (i < toAddressList.size() - 1) {  
  64.                         buffer.append(",");  
  65.                     }  
  66.                 }  
  67.             }  
  68.         }  
  69.         String toAddress = buffer.toString();  
  70.         if (!toAddress.isEmpty()) {  
  71.             // 创建邮件的接收者地址  
  72.             Address[] to = InternetAddress.parse(toAddress);  
  73.             // 设置邮件接收人地址  
  74.             message.setRecipients(Message.RecipientType.TO, to);  
  75.             // 邮件主题  
  76.             // message.setSubject("java邮件测试");  
  77.             message.setSubject("为什么错了");  
  78.             // 邮件容器  
  79.             MimeMultipart mimeMultiPart = new MimeMultipart();  
  80.             // 设置HTML  
  81.             BodyPart bodyPart = new MimeBodyPart();  
  82.             // 邮件内容  
  83.             // String htmlText = "java邮件测试111";  
  84.             String htmlText = "为什么错了";  
  85.             bodyPart.setContent(htmlText, "text/html;charset=utf-8");  
  86.             mimeMultiPart.addBodyPart(bodyPart);  
  87.           // 添加附件  
  88.             List<String> fileAddressList = new ArrayList<String>();  
  89.             fileAddressList  
  90.                     .add("C:\\Users\\tuzongxun123\\Desktop\\新建 Microsoft Office Word 文档.docx");  
  91.             if (fileAddressList != null) {  
  92.                 BodyPart attchPart = null;  
  93.                 for (int i = 0; i < fileAddressList.size(); i++) {  
  94.                     if (!fileAddressList.get(i).isEmpty()) {  
  95.                         attchPart = new MimeBodyPart();  
  96.                         // 附件数据源  
  97.                         DataSource source = new FileDataSource(  
  98.                                 fileAddressList.get(i));  
  99.                         // 将附件数据源添加到邮件体  
  100.                         attchPart.setDataHandler(new DataHandler(source));  
  101.                         // 设置附件名称为原文件名  
  102.                         attchPart.setFileName(MimeUtility.encodeText(source  
  103.                                 .getName()));  
  104.                         mimeMultiPart.addBodyPart(attchPart);  
  105.                     }  
  106.                 }  
  107.             }  
  108.             message.setContent(mimeMultiPart);  
  109.             message.setSentDate(new Date());  
  110.             // 保存邮件  
  111.             message.saveChanges();  
  112.             // 发送邮件  
  113.             Transport.send(message);  
  114.         }  
  115.     }  
  116. }  
  117.   
  118. class MailAuthenticator extends Authenticator {  
  119.   
  120.     /** 
  121.      * 用户名 
  122.      */  
  123.     private String username;  
  124.     /** 
  125.      * 密码 
  126.      */  
  127.     private String password;  
  128.   
  129.     /** 
  130.      * 创建一个新的实例 MailAuthenticator. 
  131.      *  
  132.      * @param username 
  133.      * @param password 
  134.      */  
  135.     public MailAuthenticator(String username, String password) {  
  136.         this.username = username;  
  137.         this.password = password;  
  138.     }  
  139.   
  140.     public String getPassword() {  
  141.         return password;  
  142.     }  
  143.   
  144.     @Override  
  145.     protected PasswordAuthentication getPasswordAuthentication() {  
  146.         return new PasswordAuthentication(username, password);  
  147.     }  
  148.   
  149.     public String getUsername() {  
  150.         return username;  
  151.     }  
  152.   
  153.     public void setPassword(String password) {  
  154.         this.password = password;  
  155.     }  
  156.   
  157.     public void setUsername(String username) {  
  158.         this.username = username;  
  159.     }  
  160.   
  161. }  
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 12
博文 137
码字总数 121453
×
涂宗勋
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: