在Spring中利用freemarker发送Email(个人学习资料)

在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>
  • 4、发送邮件:
//发送简单文本邮件
@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());
        // true表示启动HTML格式的邮件;
        messageHelper.setText(text, true);
        // 添加附件;
        File file = new File("f:/upload/hibernate讲义.pdf");
        messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
        // 发送邮件
        javaMailSender.send(message);
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值