发送文本信息
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("robotcs@xx.com"); // 邮件发送者
message.setTo(address); // 邮件接收者
message.setSubject(title); // 主题
message.setText(content); // 邮件内容
javaMailSender.send(message);
发送HTMl邮件
这种邮件稍后复杂一点,不能直接使用SimpleMailMessage
了,可以用下面的方法
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setTo(new String[]{contractEntity.getEmail()});//邮件接收者,数组,可以传多个
helper.setFrom("robotcs@xx.com");//邮件发送者
helper.setSubject("xx");//邮件主题
//第一个参数,是html的方格,是String类型,第二个参数是,是否是HTML格式
helper.setText(htmlText, true);
//发送邮件
javaMailSender.send(message);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
发送HTML中带图片
HTML邮件比较复杂,有些CSS语法,不同的邮箱客户端,兼容性不同,比如我自己测试,position: absolute
gmail就识别不了。
但HTML中的图片是很常见,有两种方法:
第一种是把图片当作附件加进去以后,HTML就能读取到,如果下:
try {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setTo(new String[]{"test@text.com"});
lper.setFrom("robotcs@xx.com");
helper.setSubject("test");
helper.setText(htmlText true);
//图片名称,带了路径,放在resource文件夹下面
String alarmIconName = "email/bg.jpg";
//获取图片
ClassPathResource img = new ClassPathResource(alarmIconName);
//添加图片
helper.addInline("bg", img);
//发送邮件
javaMailSender.send(message);
} catch (MessagingException ignored) {
}
HTML模版是下面这样:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body style="width: 420px;height: 596px;">
<div style="width: 420px;height: 596px;">
//就是这里,src就是图片
<img src="cid:bg">
</div>
</body>
</html>
第二种方法,就是直接把图片变成url,先把图片放在网络上,直接填写URL,亲测这种方法,兼容性好一些,如下面这种,是在gamil中,使用背景图的方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
</style>
</head>
<body style="width: 420px;height: 596px;">
<table>
<tr>
<td background="https://html.xx.com/ticket/bg.jpg"
style="background-size: 420px 596px;background-repeat: no-repeat;">
</td>
</tr>
</table>
</body>
</html>
发送附件
邮件中带附件,也是常用需求
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
messageHelper.setFrom("robotcs@xx.com");
messageHelper.setTo(new String[]{"mm@text.com", "rr@mm.com"});//接收者
messageHelper.setSubject("mm");//主题
messageHelper.setText("請看附件");
//这里添加附件,第一个参数是附件名称,第二个是文件
messageHelper.addAttachment("mm.xlsx", new File(fileName));
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
throw new RuntimeException(e);
}