文档章节

Spring 线程池配置发送邮件

郭恩洲_OSC博客
 郭恩洲_OSC博客
发布于 2014/08/30 12:26
字数 261
阅读 50
收藏 1

1.applicationContext.mxl


<!-- SMTP邮件服务配置 -->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="javaMailProperties">
	<props>
		<prop key="mail.smtp.auth">true</prop>
		<prop key="mail.smtp.timeout">25000</prop>
		<!-- SSL连接配置 -->
		<!-- <prop key="mail.smtp.starttls.enable">true</prop> <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> -->
	</props>
</property>
</bean>

	<!-- SMTP邮件异步发送 -->
<bean id="taskExecutor"
		class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
		<!-- 核心线程数 -->
		<property name="corePoolSize" value="10" />
		<!-- 最大线程数 -->
		<property name="maxPoolSize" value="50" />
		<!-- 最大队列数 -->
		<property name="queueCapacity" value="10000" />
		<!-- 线程池维护线程所允许的空闲时间 -->
		<property name="keepAliveSeconds" value="60" />
</bean>

2.MailServiceImpl.java

@Service
public class MailServiceImpl implements MailService {

	@Resource
	private FreemarkerManager freemarkerManager;
	@Resource
	private JavaMailSender javaMailSender;
	@Resource
	private TaskExecutor taskExecutor;
	
	public boolean isMailConfigComplete() {
		SystemConfig systemConfig = SystemConfigUtil.getSystemConfig();
		if (StringUtils.isEmpty(systemConfig.getSmtpFromMail()) || StringUtils.isEmpty(systemConfig.getSmtpHost()) || systemConfig.getSmtpPort() == null || StringUtils.isEmpty(systemConfig.getSmtpUsername()) || StringUtils.isEmpty(systemConfig.getSmtpPassword())) {
			return false;
		} else {
			return true;
		}
	}

// 增加邮件发送任务 public void addSendMailTask(final MimeMessage mimeMessage) { try { taskExecutor.execute(new Runnable() { public void run(){ javaMailSender.send(mimeMessage); } }); } catch (Exception e) { e.printStackTrace(); } }

public void sendMail(String subject, String templateFilePath, Map<String, Object> data, String toMail) { try { SystemConfig systemConfig = SystemConfigUtil.getSystemConfig(); ServletContext servletContext = ServletActionContext.getServletContext(); JavaMailSenderImpl javaMailSenderImpl = (JavaMailSenderImpl)javaMailSender; javaMailSenderImpl.setHost(systemConfig.getSmtpHost()); javaMailSenderImpl.setPort(systemConfig.getSmtpPort()); javaMailSenderImpl.setUsername(systemConfig.getSmtpUsername()); javaMailSenderImpl.setPassword(systemConfig.getSmtpPassword()); MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage(); Configuration configuration = freemarkerManager.getConfiguration(servletContext); Template template = configuration.getTemplate(templateFilePath); String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, data); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, false, "utf-8"); mimeMessageHelper.setFrom(MimeUtility.encodeWord(systemConfig.getShopName()) + " <" + systemConfig.getSmtpFromMail() + ">"); mimeMessageHelper.setTo(toMail); mimeMessageHelper.setSubject(subject); mimeMessageHelper.setText(text, true); addSendMailTask(mimeMessage); } catch (Exception e) { e.printStackTrace(); } }




© 著作权归作者所有

郭恩洲_OSC博客
粉丝 37
博文 256
码字总数 118957
作品 0
徐汇
高级程序员
私信 提问
Spring异步编程 你的@Async就真的异步吗?异步历险奇遇记

     引言有点长   前端的宝宝会用ajax,用异步编程到快乐的不行~ 我们java也有异步,用起来比他们还快乐~ 我们biaji一个注(gǒupí)解(gāoyào),也是快乐风男...      且看下面的栗...

java进阶架构师
09/25
0
0
java spring 发送邮件

一 导入jar 导入spring-context-support-4.0.5.RELEASE.jar相关jar 二 配置spring配置文件 这里可以灵活配置发件邮箱服务器、发件邮箱端口、发件用户名、密码 如果系统发件服务器信息定死在p...

Zzzz_WP
2018/07/09
39
0
如何在 Spring 异步调用中传递上下文

什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行。异步调用...

aoho
08/01
0
0
Spring Boot 2 如何优雅集成发送邮件?

点击蓝色“泥瓦匠BYSocket”,关注我哟 加个“星标”,不忘签到哦 作者:周立@IT牧场 GitHub: http://www.itmuch.com/spring-boot/send-email/ 本文基于:Spring Boot 2.1.3,理论支持Sprin...

泥瓦匠BYSocket
05/14
0
0
Redis必知必会——发布订阅

银行卡消费的时候,银行往往会通过微信、短信或邮件通知用户交易的详细信息,这便是发布订阅模式。我们可以使用下面的命令进行模拟 先打开一个客户端1,输入命令 表示客户端1订阅一个名为cha...

ggod
06/10
29
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之访问者模式

定义 Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which......

陈年之后是青葱
昨天
11
0
PhotoShop 高级应用 : 分层云彩 - 简单闪电效果

1.创建黑白渐水平渐变图层 2.选择滤镜选项卡: 渲染--->分层云彩功能 3.将滤镜-云彩效果渲染后的图层进行反相操作 【此时出现闪电效果】 6.调整色阶,使得闪电效果更明显 7.创建剪贴蒙版:色...

东方墨天
昨天
13
0
三种实现Android主界面Tab的方式

三种实现Android主界面Tab的方式 https://www.cnblogs.com/caobotao/p/5103673.html

shzwork
昨天
13
0
java8-Optional类

背景 NPE问题,100%的Java程序员都碰到,并且曾经是心中的痛。 1965年英国TonyHoare引入了Null引用,后续的设计语言包括Java都保持了这种设计。 一个例子 业务模型 Person 有车一族, 有Car...

春天springcarter
昨天
13
0
py 登录github时token以及cookie的应用

import requestsfrom bs4 import BeautifulSoup## 获取tokenr1 = requests.get('https://github.com/login')s1 = BeautifulSoup(r1.text,'html.parser')token = s1.find(name='input',......

子枫Eric
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部