Spring MVC+javamail实现邮件发送

开启邮箱的POP3/SMTP服务(这里以QQ邮箱举例)

设置 --> 账户 -- > 开启POP3/STMP服务,然后得到一个授权码。

引入pom依赖(jar包直达

<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>

配置xml文件

mail.properties文件

#服务器主机名 smtp.xx.com
mail.smtp.host=smtp.qq.com
mail.smtp.username=你的邮箱
#客户端授权码
mail.smtp.password=你的授权码
#编码字符
mail.smtp.defaultEncoding=utf-8
#是否进行用户名密码校验
mail.smtp.auth=true
#设置超时时间
mail.smtp.timeout=20000

applicationContext.xml文件

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.smtp.host}"/>
<property name="username" value="${mail.smtp.username}"/>
<property name="password" value="${mail.smtp.password}"/>
<property name="defaultEncoding" value="${mail.smtp.defaultEncoding}"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.ssl.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>

工具类

public class MailSender {

    /**
* JavaMailSenderImpl支持MimeMessages和SimpleMailMessages。
* MimeMessages为复杂邮件模板,支持文本、附件、html、图片等。
* SimpleMailMessages实现了MimeMessageHelper,为普通邮件模板,支持文本
*/ private JavaMailSenderImpl mailSender;
@Autowired
public void setMailSender(JavaMailSenderImpl mailSender) {
this.mailSender = mailSender;
} /**
* 发件人邮箱地址
*/
@Value("${mail.smtp.username}")
private String emailFrom; /**
* 单发
*
* @param recipient 收件人
* @param content 内容
*/
@Override
public boolean sendEmail(String recipient, String content){
MimeMessage mimeMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); /** 发件人的邮箱地址 */
messageHelper.setFrom(emailFrom);
/** 收件人邮箱地址 */
messageHelper.setTo(recipient);
/** 主题 */
messageHelper.setSubject("【嘉净】您的邮箱验证码");
/** 内容 */
messageHelper.setText("\t亲爱的用户,您好:\n\t 本次操作的验证码是:"+content+",\n\t 如非本人操作请忽略。详情:http://www.baidu.com", true);//true代表支持html格式
mailSender.send(mimeMessage);
return true;
} catch (MessagingException e) {
e.printStackTrace();
return false;
} }
}

结果展示


最新文章

  1. JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别
  2. C++: read access data using ADOX.DLL and System::Data::OleDb
  3. GPU keylogger &amp;&amp; GPU Based rootkit(Jellyfish rootkit)
  4. C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区
  5. 趋势or过渡,量子点屏幕真的优于OLED?
  6. How Tomcat Works(十一)
  7. BZOJ_1621_[Usaco2008_Open]_Roads_Around_The_Farm_分岔路口(模拟+大水题)
  8. 【转】cocos2d-x获取系统时间&mdash;&mdash;2013-08-25 10
  9. spring+hibernate+jpa+Druid的配置文件,spring整合Druid
  10. WebHooks
  11. form表单数据封装成json格式并提交给服务器
  12. .net core 2使用ef core 2.0以db first方法创建实体类
  13. celery 大量消息的分布式系统 定时任务
  14. Java中代理
  15. python入门学习:8.类
  16. UI设计文本框解决Placeholder的在IE10 以下 IE 9 IE8 IE 7 的兼容问题
  17. Django admin 常用方法
  18. 笔记本建立wifi热点的实用详细步骤
  19. 使用向量化的 if:ifelse
  20. sql server 查询所有被锁表并批量解除

热门文章

  1. PO,VO,BO,POJO,DAO的区别
  2. SpringMVC(6)数据验证
  3. spring boot.2x 集成swagger 加入拦截器后 swagger不能访问
  4. Lua控制语句
  5. Python单元测试框架unittest之生成测试报告(HTMLTestRunner)
  6. scrapy::Max retries exceeded with url
  7. c语言:2.3.3
  8. Java基础00-基础知识练习12
  9. 【LeetCode】203.移除链表元素
  10. java并发编程基础—生命周期与线程控制