Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
来源:互联网 发布:mac os 光盘镜像 编辑:程序博客网 时间:2024/04/28 02:00
项目中经常会遇到发送邮件的问题,有时还需要发送html格式的邮件,如果直接在java文件硬编码写html,那么维护起来将会非常麻烦,利用Velocity模板引擎可以解决这个问题,使得业务处理和视图渲染相分离,方便维护。
项目依赖:
<properties> <springframework>4.2.6.RELEASE</springframework></properties><dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${springframework}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${springframework}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${springframework}</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${springframework}</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${springframework}</version></dependency><dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version></dependency><dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.5</version></dependency>
接下写一个服务类,提供发送邮件的功能:
public class SendEmailService { private JavaMailSender sender; private VelocityEngine velocityEngine; public void sendEmail() { MimeMessagePreparator preparator = new MimeMessagePreparator() { @Override public void prepare(MimeMessage mimeMessage) throws Exception { //设置内容显示的编码格式 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, "UTF-8"); helper.setTo("wang704987562@vip.qq.com"); helper.setFrom("输入你的发送邮箱地址"); Map modal = new HashMap<>(); modal.put("userName", "wzx"); modal.put("emailAddress", "wang704987562@vip.qq.com"); String content = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "email_tempalte.vm", "UTF-8", modal); helper.setSubject("邮件主题"); helper.setText(content, true); } }; this.sender.send(preparator); } public void setSender(JavaMailSender sender) { this.sender = sender; } public void setVelocityEngine(VelocityEngine velocityEngine) { this.velocityEngine = velocityEngine; }}
添加一个简单的模板文件:
<html> <body> <h3>Hi ${userName}, welcome to the Chipping Sodbury On-the-Hill message boards!</h3> <div> Your email address is ${emailAddress}. </div> </body></html>
在配置文件中配置bean:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.mxhichina.com"/> <property name="username" value="输入发送邮箱地址"/> <property name="password" value="输入发送邮箱密码"/> </bean> <bean id="sendEmailService" class="cn.ssm.service.SendEmailService"> <property name="sender" ref="mailSender"/> <property name="velocityEngine" ref="velocityEngine"/> </bean> <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> <property name="velocityProperties"> <props> <prop key="resource.loader">class</prop> <prop key="class.resource.loader.class"> org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader </prop> <!-- 配置引擎读取数据的编码格式 --> <prop key="input.encoding">UTF-8</prop> <!-- 配置引擎输出数据的编码格式 --> <prop key="output.encoding">UTF-8</prop> <prop key="default.contentType">application/x-www-form-urlencoded; charset=UTF-8</prop> </props> </property> </bean>
注意:需要将代码替换成自己的邮箱帐号和密码,否则发送失败
最后,写个测试用例:
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:applicationContext.xml")public class SendEmailTest { @Autowired private SendEmailService emailService; @Test public void test() { emailService.sendEmail(); }}
运行后,效果如下:
可以正确显示html格式并显示中文。
0 0
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- java如何发送邮件以及使用Velocity模板解决模板文件中文乱码的问题
- 使用Formail发送html格式的中文主题邮件,解决乱码问题等
- 使用spring发送Mail + Velocity 模板 - 中文乱码解决
- spring mvc 发送html格式velocity邮件模板(包括定时发送与按钮触发发送)
- 使用XSLT制作HTML邮件模板并发送
- 使用XSLT制作HTML邮件模板并发送
- python邮件发送(带附件,解决中文乱码问题)
- java 发送html格式邮件 样式混乱解决
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- python读取\t\n的文件转换成html表格发送邮件(解决中文乱码问题)
- java使用Freemarker模板发送固定格式邮件
- php使用curl post 发送url 并解决中文乱码问题
- httpClient使用postMethod方法发送请求,携带参数并解决中文乱码问题
- perl发送邮件中文乱码解决
- ubuntu 14.04下安装gitlab
- 【JSTL】core标签---流程控制
- Spark的四种运行模式(1.2.1)
- 加快maven中jar包的下载速度
- Java学习笔记(2)
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- P1789【Mc生存】插火把
- 黄油刀使用方法(butterknife)
- Codeforces 586C Gennady the Dentist【模拟】
- anaconda 中安装seaborn ,plotly,jieba
- Linux socket编程中阻塞和非阻塞
- div仿框架布局
- Android Notification 使用
- 股票入门基础知识31:日本蜡烛图——十字线形态