java simpleMailMessage 邮件发送功能


spring-mvc 配置


spring  配置


mailsender.properties 


Email.java


   
   
  
  
  1. package com.zerdoor.util;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.core.io.ClassPathResource;
  4. import org.springframework.mail.SimpleMailMessage;
  5. import org.springframework.mail.javamail.JavaMailSender;
  6. import org.springframework.mail.javamail.MimeMessageHelper;
  7. import javax.mail.internet.MimeMessage;
  8. /**
  9. *
  10. */
  11. public class Email {
  12. private JavaMailSender javaMailSender;
  13. private SimpleMailMessage simpleMailMessage;
  14. /**
  15. * @方法名: sendMail
  16. * @参数名:@param subject 邮件主题
  17. * @参数名:@param content 邮件主题内容
  18. * @参数名:@param from 发件人Email地址
  19. * @参数名:@param to 收件人Email地址
  20. * @描述语: 发送邮件
  21. */
  22. public void sendMail(String subject, String content, String from,String to) {
  23. try {
  24. MimeMessage mimeMessage = javaMailSender.createMimeMessage();
  25. /**
  26. * new MimeMessageHelper(mimeMessage,true)之true个人见解:
  27. * 关于true参数,官方文档是这样解释的:
  28. * use the true flag to indicate you need a multipart message
  29. * 翻译过来就是:使用true,以表明你需要多个消息
  30. * 再去翻一下MimeMessageHelper的API,找到这样一句话:
  31. * supporting alternative texts, inline elements and attachments
  32. * 也就是说,如果要支持内联元素(HTML)和附件就必须给定第二个参数为true
  33. * 否则抛出 java.lang.IllegalStateException 异常
  34. */
  35. /**
  36. * 刚开始收到邮件显示中文乱码,于是赶紧查看官方文档,没有提到,再查阅API,也没有查到Set编码的方法,
  37. * 于是就在HTML里面自己指定编码,也不起作用,邮件还是显示中文乱码;
  38. * 最后的结论是:如果HTML内容含有中文必须指定HTML的编码,默认是ISO-8859-1,所以会显示中文乱码
  39. * 在MimeMessageHelper的构造方法中找到:
  40. * MimeMessageHelper(MimeMessage mimeMessage, boolean multipart, String encoding)
  41. * 实验一下,OK,原来编码是在这儿设置,没事了,中文正常显示
  42. */
  43. MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
  44. messageHelper.setFrom(from); //设置发件人Email
  45. messageHelper.setSubject(subject); //设置邮件主题
  46. messageHelper.setText(content); //设置邮件主题内容
  47. messageHelper.setTo(to); //设定收件人Email
  48. // messageHelper.setText(
  49. // "<html>" +
  50. // "<body>" + content +
  51. // "</body>" +
  52. // "</html>", true);
  53. //步骤 1
  54. //资源的引用方法:cid:你自己设置的资源ID
  55. // messageHelper.setText(
  56. // "<html>" +
  57. // "<body>" +
  58. // "<BR>" +
  59. // "<div align='center'>" +
  60. // "<img src='cid:imageid'/>" +
  61. // "<BR>" +
  62. // "<h4>" +
  63. // "返回 fancydeepin 的Blogjava:" +
  64. // "<a href='http://www.blogjava.net/fancydeepin/'>http://www.blogjava.net/fancydeepin/</a>" +
  65. // "</h4>" +
  66. // "</div>" +
  67. // "</body>" +
  68. // "</html>", true);
  69. /**
  70. * ClassPathResource:很明显就是类路径资源,我这里的附件是在项目里的,所以需要用ClassPathResource
  71. * 如果是系统文件资源就不能用ClassPathResource,而要用FileSystemResource,例:
  72. * FileSystemResource file = new FileSystemResource(new File("D:/woniu.png"));
  73. */
  74. /**
  75. * 如果想在HTML中使用资源,必须在HTML中通过资源 ID 先引用资源,然后才来加载资源
  76. */
  77. //步骤 2
  78. // ClassPathResource image = new ClassPathResource("images/body.png");
  79. // messageHelper.addInline("imageid", image);
  80. javaMailSender.send(mimeMessage); //发送HTML邮件
  81. } catch (Exception e) {
  82. System.out.println( "异常信息:" + e);
  83. }
  84. }
  85. //Spring 依赖注入
  86. public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) {
  87. this.simpleMailMessage = simpleMailMessage;
  88. }
  89. //Spring 依赖注入
  90. public void setJavaMailSender(JavaMailSender javaMailSender) {
  91. this.javaMailSender = javaMailSender;
  92. }
  93. }


  
  
 
 
使用的时候直接调用
  
  
 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM