在Spring中利用freemarker发送Email:参考资料
- 1、在resources目录下配置mail.properties
mail.host=smtp.126.com
mail.username=fenglang2016
mail.password=fenglang2016
mail.defaultEncoding=UTF-8
mail.transport.protocol=smtp
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.from=fenglang2016@126.com
mail.to=1875268702@qq.com
mail.subject=TestEmail
- 2、在resources目录下新建文件夹freemarker,并且建立email.ftl文件
<html>
<body>
<h2>
亲爱的${user.name},欢迎你的到来,让我们一起开心,一起成长!
</h2>
<div>
你注册的邮箱地址为<a href='mailto:${user.gender}'>${user.gender}</a>
</div>
</body>
</html>
- 3、在resources目录下配置spring-mail.xml,并将其import引入applicationcontext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}"></property>
<property name="username" value="${mail.username}"></property>
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="${mail.defaultEncoding}"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.transport.protocol">${mail.transport.protocol}</prop>
<!-- 必须进行授权验证,目的是阻止他人乱发邮件 -->
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<!-- SMTP加密方式:连接到一个tls加密连接 -->
<prop key="mail.smtp.starttls.enable">${mail.smtp.starttls.enable}</prop>
</props>
</property>
</bean>
<bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from" value="${mail.from}" />
<property name="to" value="${mail.to}" />
<property name="subject" value="${mail.subject}" />
<!-- <property name="text" value="邮件内容" /> -->
</bean>
<!-- FreeMarker的视图解析器 -->
<bean id="freemarkerResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="order" value="1" />
<property name="suffix" value=".ftl" />
<property name="contentType" value="text/html;charset=utf-8" />
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"></property>
</bean>
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPaths" value="classpath:/freemarker" />
<property name="defaultEncoding" value="utf-8" />
<!-- 设置FreeMarker环境属性 -->
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">5</prop><!-- 刷新模板的周期,单位为秒 -->
<prop key="default_encoding">UTF-8</prop><!-- 模板的编码格式 -->
<prop key="locale">UTF-8</prop><!-- 本地化设置 -->
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="time_format">HH:mm:ss</prop>
<prop key="number_format">0.####</prop>
<prop key="boolean_format">true,false</prop>
<prop key="whitespace_stripping">true</prop>
<prop key="tag_syntax">auto_detect</prop>
<prop key="url_escaping_charset">UTF-8</prop>
</props>
</property>
</bean>
</beans>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class MailTest {
@Resource
private MailSender mailSender;
@Resource
private FreeMarkerConfigurer freeMarkerConfigurer;
@Test
public void testSendEmail(){
SimpleMailMessage message=new SimpleMailMessage();
message.setFrom("fenglang2016@126.com");
message.setTo("1875268702@qq.com");
message.setSubject("测试");
message.setText("Hello,欢迎入住爱情公寓!");
mailSender.send(message);
}
}
@Resource
private MailSender mailSender;
@Resource
private FreeMarkerConfigurer freeMarkerConfigurer;
@Test
public void testEmailResource() throws Exception{
JavaMailSenderImpl sender=(JavaMailSenderImpl) mailSender;
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(message,true,"UTF-8");
helper.setFrom("fenglang2016@126.com");
helper.setTo("1875268702@qq.com");
helper.setSubject("标题");
helper.setText("测试文本-->");
FileSystemResource file=new FileSystemResource(new File("a.jpg"));
helper.addAttachment("a.jpg", file);
sender.send(message);
}
/**
* 利用FreeMarker发送带附件的邮件
*/
@Service
public class EmailService {
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private SimpleMailMessage simpleMailMessage;
@Autowired
private FreeMarkerConfigurer freeMarkerConfigurer;
public void sendEmail() throws Exception {
Template template = freeMarkerConfigurer.getConfiguration().getTemplate("email.ftl");
User user = new User();
user.setName("冯朗");
user.setGender("fenglang2016@126.com");
Map<String, Object> map = new HashMap<>();
map.put("user", user);
String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8");
messageHelper.setFrom(simpleMailMessage.getFrom());
messageHelper.setTo(simpleMailMessage.getTo());
messageHelper.setSubject(simpleMailMessage.getSubject());
messageHelper.setText(text, true);
File file = new File("f:/upload/hibernate讲义.pdf");
messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
javaMailSender.send(message);
}
}