在Spring框架的spring-context-support.jar中有对电子邮件发送功能的封装;

基于Spring开发简单省事,而且更稳定。需要mail.jar包支持

 @Component
 public class EmailSendService implements IEmailSendService {
     private String host;
     private String username;
     private String password;

     public boolean sendText(String email[], String title, String text) {
         try {
             JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
             // 设定mail server
             senderImpl.setHost(this.host);

             // 建立邮件消息
             SimpleMailMessage mailMessage = new SimpleMailMessage();
             // 设置收件人,寄件人 用数组发送多个邮件
             // String[] array = new String[]
             // {"sun111@163.com","sun222@sohu.com"};
             // mailMessage.setTo(array);
             mailMessage.setTo(email);
             mailMessage.setFrom(IDNMailHelper.toIdnAddress(this.username));
             mailMessage.setSubject(title);
             mailMessage.setText(text);

             senderImpl.setUsername(this.username); // 根据自己的情况,设置username
             senderImpl.setPassword(this.password); // 根据自己的情况, 设置password

             Properties prop = new Properties();
             prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
             prop.put("mail.smtp.timeout", "25000");
             senderImpl.setJavaMailProperties(prop);
             // 发送邮件
             // senderImpl.send(mailMessage);
             senderImpl.send(mailMessage);
             System.out.println(" 邮件发送成功.. ");
             return true;
         } catch (Exception e) {
             e.printStackTrace();
             return false;
         }
     }

     public boolean sendHtml(String email[], String title, String html) {
         try {
             JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();

             // 设定mail server
             senderImpl.setHost(this.host);

             // 建立邮件消息,发送简单邮件和html邮件的区别
             MimeMessage mailMessage = senderImpl.createMimeMessage();
             MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);

             // 设置收件人,寄件人
             messageHelper.setTo(email);
             messageHelper.setFrom(this.username);
             messageHelper.setSubject(title);
             // true 表示启动HTML格式的邮件
             messageHelper.setText(html, true);
             senderImpl.setUsername(this.username); // 根据自己的情况,设置username
             senderImpl.setPassword(this.password); // 根据自己的情况, 设置password
             Properties prop = new Properties();
             prop.put("mail.smtp.auth", "true"); // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
             prop.put("mail.smtp.timeout", "25000");
             senderImpl.setJavaMailProperties(prop);
             // 发送邮件
             senderImpl.send(mailMessage);

             System.out.println("邮件发送成功..");
             return true;
         } catch (Exception e) {
             e.printStackTrace();
             return false;
         }
     }

     public void setHost(String host) {
         this.host = host;
     }

     public void setUsername(String username) {
         this.username = username;
     }

     public void setPassword(String password) {
         this.password = password;
     }

     public boolean sendText(String email, String title, String text) {
         return this.sendText(new String[]{email}, title, text);
     }

     public boolean sendHtml(String email, String title, String html) {
         return this.sendHtml(new String[]{email}, title, html);
     }

 }

在这里如果不注意会有一个IDN编码问题。我是经历之后在so上找到了相关的解决方法。详见以下代码

可能出现的异常:JavaMail: “Domain contains control or whitespace in string” errormessage because of domain with danish charaters

 public class IDNMailHelper {

     public static String toIdnAddress(String mail) {
         if (mail == null) {
             return null;
         }
         int idx = mail.indexOf('@');
         if (idx < 0) {
             return mail;
         }
         return localPart(mail, idx) + "@" + IDN.toASCII(domain(mail, idx));
     }

     private static String localPart(String mail, int idx) {
         return mail.substring(0, idx);
     }

     private static String domain(String mail, int idx) {
         return mail.substring(idx + 1);
     }

 }

最新文章

  1. Android之什么是Activity和常用的ADB命令以及Android项目结构的认识
  2. 【HTML5】浅析html使用SSE(Server-Sent Events)连接JSP
  3. error: library dfftpack has Fortran sources but no Fortran compiler found解决方法
  4. ssh-copy-id帮你建立信任
  5. 10 款提高开发效率的 jQuery/CSS3 组件
  6. 1303: [CQOI2009]中位数图
  7. 定位CoreLocation
  8. 创建自托管的SignalR服务端
  9. JS获取request字符串
  10. angularJS 系列(二)——理解指令 understanding directives
  11. 深入理解css中vertical-align属性
  12. Python学习笔记011_模块_标准库_第三方库的安装
  13. 6L - 大菲波数
  14. mysql利用binlog进行数据恢复
  15. 数据库导入.bacpac 文件创建新实例
  16. Python高阶函数(Map、Reduce、Filter)
  17. Android Bander设计与实现 - 设计
  18. Codeforces Round #354 (Div. 2) C. Vasya and String 二分
  19. notepad++怎样添加文件目录
  20. LeetCode 24——两两交换链表中的节点

热门文章

  1. CS231n——图像分类(KNN实现)
  2. Servlet 中 RequestDispacher 请求与分发
  3. python 读取consul配置
  4. resultMap与resultType的区别等容易混淆的概念
  5. MyBatis中使用OGNL表达式与操作符
  6. jmeter的build.xml
  7. DataBase -- SQL INNER JOIN
  8. 雅礼集训 Day5 T3 题 解题报告
  9. tomcat + apache 动静分离
  10. 消耗战(bzoj 2286)