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

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

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

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

javax.mail

mail

1.4.7

org.springframework

spring-context-support

3.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("573215750@qq.com");

mailSender.setPassword("dsruklozelxcbdba");//授权码

SimpleMailMessage mail = new SimpleMailMessage();

mail.setTo("573215750@qq.com");

mail.setFrom("573215750@qq.com");

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("573215750@qq.com");

helper.setFrom("573215750@qq.com");

helper.setSubject("test mail");

helper.setText("

"

+ "

hello!!spring html Mail

"

+ ""

, true);

依然使用mailSender发送这个mail

mailSender.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.freemarker

freemarker

2.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);

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

java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件相关推荐

  1. oa移动办公怎么修改服务器端口,移动办公oa怎么知道服务器地址

    移动办公oa怎么知道服务器地址 内容精选 换一换 为保证弹性云服务器的安全性,每个弹性云服务器创建成功后都会加入到一个安全组中,安全组默认Internet对内访问是禁止的 (Linux SSH&quo ...

  2. Windows服务器如何查看服务器端口是否开放?扬州高防服务器103.216.155.**

    在工作中处理服务器故障问题的时候,经常需要检测一下Windows的服务器业务端口是否开放,是否能正常与外面通讯.今天飞飞与大家分享一下如何在windows环境下检测服务器端口是否开放,方法很简单. 1 ...

  3. 如何检测远程服务器端口是否打开,如何远程查看服务器端口是否打开

    1.安装telnet.我的win7下就没有telnet,在cmd下输入telnet提示没有该命令.于是我们进入控制面板---->程序---->打开或关闭windows功能.然后等一段时间, ...

  4. 致远oa服务器端口怎么修改,致远oa服务器设置

    致远oa服务器设置 内容精选 换一换 云耀云服务器创建成功后,您可以根据需求,修改云服务器的名称.系统支持批量修改多台云耀云服务器的名称,修改完成后,这些云耀云服务器的名称相同.登录控制台.单击管理控 ...

  5. 修改服务器端口后防火墙要设置吗,服务器设置完防火墙需要重启吗

    服务器设置完防火墙需要重启吗 内容精选 换一换 代码迁移工具进行代码迁移时,需要调用Linux下的rpm.deb等命令才能完成扫描和迁移相关任务,这些命令和逻辑必须在后端Linux运行.IDE插件只支 ...

  6. java邮箱找回密码_Spring实现简单的邮箱找回密码功能

    通过spring可以实现简单的邮箱找回密码的功能,在此做一下简单的笔记. 1.首先就是导入一些相关的jar包 2.加入配置文件,具体配置信息如下: encoding="UTF-8" ...

  7. gulp修改服务器端口,2.用gulp建立一个服务器

    查看你的web文件包 |- view |-|- index.html |-node_modules 安装对应的gulp插件 这个时候请确认你已经把gulp安装完成了. 进入控制台,进入对应的项目地址 ...

  8. centos svn服务器端口配置文件,centos下配置svn服务器

    安装了lnmp的集成环境包,服务器倒是很快就安好了. 从官网下载一个SVN回来安装,刚开始因为下的svn是1.7的,但是他的支持包又是1.6的,结果编译不过,后来换成了 1.6的,编译安装无问题,不过 ...

  9. 请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同...

    异常详细信息: System.Web.HttpException: 无法向会话状态服务器发出会话状态请求.请确保已启动 ASP.NET State service,并且客户端和服务器端口是相同的.如果 ...

最新文章

  1. [转]设计高效SQL: 一种视觉的方法
  2. Spring Boot 核心配置文件详解
  3. Windows10避开注册的方式安装sourceTree,Failed to connect to github.com port 443: Timed out问题解决
  4. 用 python 制作高逼格的数学动画
  5. wince中重启网卡
  6. java 课后习题 随机整数最大值和最小值
  7. mysql免安装_腾讯云Ubuntu18.04部置Django2系列(二):Ubuntu18.04 安装Mysql
  8. c语言jam的随机数,c – 如何重置随机数引擎?
  9. String类的常见方法的使用案例
  10. 【Java从0到架构师】Spring - 生命周期、代理
  11. thinkphp 控制器继承
  12. 初学者必备Linux指令
  13. 关于c++库文件的一点使用体会
  14. LeetCode 127. Word Ladder
  15. iOS应用架构谈 本地持久化方案及动态部署
  16. C语言实现sin函数的程序设计
  17. QT使用PaddleOCR和百度OCR进行文字识别
  18. 【分享】.Net有哪些大型项目、大型网站的案例?
  19. 高德地图发布Q2交通报告
  20. 程序员博客html模板,程序员技术博客WordPress主题

热门文章

  1. 内涵段子爬取及re匹配
  2. 力扣1046-最后一块石头的重量(原汁原味利用排序,自己写的100% Java题解)
  3. linux的tar命令之-N参数详解
  4. 反脆弱性对产业生态的启发
  5. eclipse安装SVN插件步骤
  6. 在Word中巧改厘米标尺(转)
  7. JAVA 数字图像处理----非白即黑的灰,2B青年的自画像
  8. conda虚拟环境pip装包总装载总环境中解决办法
  9. python 标签云_python 制作标签云
  10. shell 中转换16进制10进制