微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

spring mail借助qq邮箱服务器发送邮件hello!!spring html Mailhello!!spring html Mailhello!!spring html Mail

这篇文章主要介绍了spring mail借助QQ邮箱服务器发送邮件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

spring mail封装了javaMail的邮件服务,让邮件服务使用起来更简单,下面以QQ邮箱服务器为例,用spring mail服务来发送邮件

配置QQ邮箱,“设置”――“账户”,打开smtp服务,生成授权码

生成授权码需要验证手机,接下来用QQ邮箱账号和授权码就可以发送邮件了,不需要qq密码

spring mail服务在spring-context-support中,配置依赖,然后就可以借助QQ邮箱提供的发件服务器发送邮件

javax.mailmail1.4.7org.springframeworkspring-context-support3.2.17.RELEASE

普通文本邮件

首先测试的是普通文本邮件package com.xmyself.mail; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSenderImpl; public class Main { public static void main(String[] args) { JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); mailSender.setHost("smtp.qq.com"); mailSender.setPort(587); mailSender.setUsername("[email protected]"); mailSender.setPassword("dsruklozelxcbdba");//授权码 SimpleMailMessage mail = new SimpleMailMessage(); mail.setTo("[email protected]"); mail.setFrom("[email protected]"); mail.setSubject("test mail"); mail.setText("test mail content"); mailSender.send(mail); System.out.println("success"); } }运行,即可发送一封email,注意:授权码而不是密码,端口并不是25而是587接下来,保持mailSender不变,修改mail类型,发送内容丰富的邮件简单html邮件邮件内容以html格式展现,只需要修改如下MimeMessage mail = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mail, true);//true用来打开multipart模式,添加图片或附件 helper.setTo("[email protected]"); helper.setFrom("[email protected]"); helper.setSubject("test mail"); helper.setText("" + "

hello!!spring html Mail

" + "" , true);依然使用mailSender发送这个mailmailSender.send(mail);图片的html邮件邮件的html内容中插入图片显示修改text内容即可helper.setText("" + "

hello!!spring html Mail

" + "" + "" , true); FileSystemResource image = new FileSystemResource(new File("d:/test.jpg")); helper.addInline("image", image);带附件的html邮件

邮件添加附件,text内容不变,只需要修改如下

helper.setText("" + "

hello!!spring html Mail

" + "" , true); FileSystemResource image = new FileSystemResource(new File("d:/test.jpg")); helper.addAttachment("test.jpg", image);

freemarker模板邮件

html内容通常非常丰富,直接写在setText()方法中实在太乱了,所以,应该将html作为一个文件单独管理,然后用工具将其内容转换为字符串,作为setText()的参数,下面以freemarker模板引擎为例

在工程src/main/resources目录下新建templates目录,里面放一个test.ftl文件内容如下

test freemarker template, welcome ${username}

然后,用freemarker和spring提供的工具将内容转换为字符串,这当然需要依赖新的jar

org.freemarkerfreemarker2.3.23

新建FreemarkerParser.java

package com.xmyself.mail; import java.util.Map; import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import freemarker.template.Configuration; import freemarker.template.Template; public class FreemarkerParser { public String toHtmlString(String name, Map data) { @SuppressWarnings("deprecation") Configuration config = new Configuration(); config.setClassForTemplateLoading(this.getClass(), "/templates/"); try { Template template = config.getTemplate(name); return FreeMarkerTemplateUtils.processtemplateIntoString(template, data); } catch (Exception e) { e.printstacktrace(); } return "fail"; } }

用map中的值替换掉模板中的${}内容,将模板文件转换为String字符串

注意:过程中模板路径的配置与读取是个麻烦事,暂时以这种方式处理

发送邮件代码只需要非常小的变化

Map data = new HashMap(); data.put("username", "chengyi"); String text = new FreemarkerParser().toHtmlString("test.ftl", data); helper.setText(text, true); FileSystemResource image = new FileSystemResource(new File("d:/test.jpg")); helper.addInline("image", image);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐