<!--邮件发送实现类-->

<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">

<property name="host" value="smtp.qq.com"/>

<property name="port" value="25"/>

<property name="username" value=" 你的邮箱 "/>

<property name="password" value=" 你的邮箱密码 "/>

<property name="javaMailProperties">

<props >

<prop key="mail.smtp.auth">true</prop>

</props>

</property>

</bean>

<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">

<property name="from" value=" 发件人" />

<property name="subject" value=" 邮件主题 " />

<!--

<property name="text" value=" 邮件内容 " />

-->

</bean>

<!--线程池异步发送邮件-->

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">

<property name="corePoolSize" value="5" />

<property name="maxPoolSize" value="10" />

<property name="queueCapacity" value="25" />

</bean>

<!--FreeMarker 模板-->

<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

<property name="templateLoaderPath" value="classpath:template" />

<!--<property name="templateLoaderPath" value="/template" />-->

<property name="freemarkerSettings">

<props>

<prop key="locale">zh_CN</prop>

<prop key="default_encoding">UTF-8</prop>

</props>

</property>

</bean>

发送邮件的工具类:(采用注解形式注入管理邮件发送的类)

public class MailSender {

@Inject

private JavaMailSender javaMailSender;

@Inject

private SimpleMailMessage simpleMailMessage;

@Inject

private FreeMarkerConfigurer freeMarkerConfigurer;

@Inject

private TaskExecutor taskExecutor;

/**

*  构建邮件内容,发送邮件。

* @param user   用户

* @param url    链接

*/

public void send(User user, String url,String email) {

String nickname = user.getNickname();

String to = email;

String text = "";

Map<String, String> map = new HashMap<String, String>(1);

map.put("url", url);

try {

//             从FreeMarker模板生成邮件内容

Template template = freeMarkerConfigurer.getConfiguration().getTemplate("register_mail.ftl");

//             模板中用 ${XXX}站位,map 中key为 XXX的value 会替换占位符内容。

text = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);

} catch (IOException e) {

e.printStackTrace();

} catch (TemplateException e) {

e.printStackTrace();

}

this.taskExecutor.execute(new SendMailThread(to,null,text));

}

//     内部线程类,利用线程池异步发邮件。

private class SendMailThread implements Runnable {

private String to;

private String subject;

private String content;

private SendMailThread(String to, String subject, String content) {

super();

this.to = to;

this.subject = subject;

this.content = content;

}

@Override

public void run() {

sendMail(to, subject, content);

}

}

/**

*  发送邮件

* @param to         收件人邮箱

* @param subject    邮件主题

* @param content    邮件内容

*/

public void sendMail(String to, String subject, String content) {

try {

MimeMessage message = javaMailSender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8");

messageHelper.setFrom(simpleMailMessage.getFrom());

if (subject != null) {

messageHelper.setSubject(subject);

} else {

messageHelper.setSubject(simpleMailMessage.getSubject());

}

messageHelper.setTo(to);

messageHelper.setText(content, true);

javaMailSender.send(message);

} catch (MessagingException e) {

e.printStackTrace();

}

}

SpringMVC 邮件发送的更多相关文章

  1. SpringBoot 2.X从0到1实现邮件发送功能

    Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...

  2. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  3. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  4. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

  5. SSH项目里面 忘记密码的邮件发送功能

    package com.xxx.util; import java.util.Date; import java.util.Properties; import javax.mail.Address; ...

  6. [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作

    这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...

  7. java spring 邮件发送

    开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...

  8. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  9. c#实现邮件发送链接激活

    2016-08-24 10:09:52 public void MailSend(string email) { MailMessage MyMail = new MailMessage(); MyM ...

随机推荐

  1. Jquery判断数组中是否包含某个元素$.inArray()的用法

    判断数组里面是否包含某个元素可以使用 $.inArray("元素(字符串)",数组名称) 进行判断 ,当存在该元素(字符串)时,返回该元素在数组的下标,不存在时返回 -1 示例代码 ...

  2. KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定

    foreach绑定 foreach绑定主要用于循环展示监控数组属性中的每一个元素,一般用于table标签中 假设你有一个监控属性数组,每当您添加,删除或重新排序数组项时,绑定将有效地更新UI的DOM- ...

  3. leancloud 手机注册用户(调用API) 教程

    // 从storybord 连线过来的button方法(注册按钮) - (IBAction)regist:(UIButton *)sender { AFHTTPSessionManager *mana ...

  4. CSS3选择器的研究,案例

    在上一篇CSS3选择器的研究中列出了几乎所有的CSS3选择器,和伪类选择器,当是并没有做案例的研究,本想在那篇文章里面写,但想想如果把案例都写在那篇文章里面,对于查找来说就不是很方便,所有另开一篇来讲 ...

  5. 暴雪HASH算法(转)

    暴雪公司有个经典的字符串的hash公式 先提一个简单的问题,假如有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否有这个字符串并找到它,你会怎么做? 有一个方法最简单,老老实实 ...

  6. java中finally和return的执行顺序

    注意:return的位置... 从这几个例子中可以看到,如果try之前没有有条件的return,则try..catch..finally语句块中的语句都是顺序执行(如果try中或者catch中 有re ...

  7. 《BI那点儿事》Microsoft 决策树算法——找出三国武将特性分布,献给广大的三国爱好者们

    根据游戏<三国志11>武将数据,利用决策树分析,找出三国武将特性分布.其中变量包括统率.武力.智力.政治.魅力.身分.变量说明:统率:武将带兵出征时的部队防御力.统帅越高受到普通攻击与兵法 ...

  8. 使用Javascript监控前端相关数据

    项目开发完成外发后,没有一个监控系统,我们很难了解到发布出去的代码在用户机器上执行是否正确,所以需要建立前端代码性能相关的监控系统. 所以我们需要做以下的一些模块: 一.收集脚本执行错误 functi ...

  9. HTML5移动Web开发(五)——移动设计之CSS媒介查询

    CSS媒介查询(media query)是响应式设计中很重要的部分,它帮助你实现更加灵活的移动设计. 看示例代码ch01r06_c.html <!doctype html> <htm ...

  10. MAC与HMAC的介绍及其在AWS和Azure中的应用

    MAC 在密码学中,(消息认证码)Message Authentication Code是用来认证消息的比较短的信息.换言之,MAC用来保证消息的数据完整性和消息的数据源认证. MAC由消息本身和一个 ...