Java最简洁方法实现复杂邮件发送(图片/附件等)

看到很多关于SpringBoot发送邮件的文章,感觉都有点繁琐,所以整理了一下我自己感觉比较简洁的方法给初学者快速上手。

引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
# 以.yml文件为例
spring:
  mail:
  	# 以阿里邮箱为例
    host: smtp.mxhichina.com 
    username: xxxx@test.com
    password: password
    port: 80

P.S. 此处使用80端口的原因可以参考此文:
解决阿里云服务器25端口发送邮件失败【最简单的方法】

代码基础内容
// 此处 import 语句仅仅作为提示,实际情况下,编译器会自动帮你引入。
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
...

@Slf4j
@Service
public class MailDeliveryService{
	
	@Resource
	private JavaMailSenderImpl mailSender;
	
	...
}
1. 简单文本邮件发送
// 邮件内容
String mailSubject = "简单邮件主题"
String rawContent = "{0},您好!今天是{1},祝您生活愉快。--测试方"
String userName = "王思聪"
String dateStr = new SimpleDateFormat("yyyy年MM月dd日").format(new Date()))
String content= MessageFormat.format(rawContent, userName, dateStr)
// 邮件发送
MimeMessage message= mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
// 发信人
helper.setFrom("xxxx@test.com");
// 收信人
helper.setTo("yyyy@test.com");
// 主题
helper.setSubject(mailSubject);
// 内容
helper.setText(content)
// 发送
mailSender.send(mimeMessage);
log.info("yyyy 邮件处理成功");
2. 复杂邮件发送

此为邮件HTML模板:

<html><body>
<!--左对齐-->
<div style='text-align:left'>{0},您好!</div>
<!--缩进-->
<div style="text-indent: 2em">今天是{1},祝您生活愉快。</div>
<!--图片 cid是你为该图片设定的唯一id值-->
<img src='cid:pictureID'>
<!--右对齐-->
<div style='text-align:right'>--测试方</div>
</body></html>
String mailSubject = "复杂邮件主题"
// 上述HTML的字符串
// 因为在代码中显示要换行,所以用 + 号连接,实际都是存在数据库的完整字符串
String rawContent =
      "<html><body>" +
      "<div style='text-align:left'>{0},您好!</div>" +
      "<div style='text-indent: 2em'>今天是{1},祝您生活愉快。</div>" +
      "<img src='cid:pictureID'>" +
      "<div style='text-align:right'>--测试方</div>" +
      "</body></html>";
String userName = "靓仔"
String dateStr = new SimpleDateFormat("yyyy年MM月dd日").format(new Date()))
String content= MessageFormat.format(rawContent, userName, dateStr)

// 邮件发送
MimeMessage message= mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
// 发信人(带有发件人自定义名称)
helper.setFrom("测试平台<xxxx@test.com>");
// 收信人
String[] toList = {"apple@test.com", "banana@test.com"};
helper.setTo(toList);
// 抄送
String[] ccList = {"cherry@test.com", "durian@test.com"};
helper.setCc(ccList);
// 密送(暗抄送)
String[] bccList = {"mango@test.com", "orange@test.com"};
helper.setBcc(bccList);
// 主题
helper.setSubject(mailSubject);
// 内容(布尔值代表前面的字符串是HTML)
helper.setText(content, true);
// 插入图片(嵌入式资源)
helper.addInline("pictureID", new File("/etc/pic.jep"));
// 加入附件
helper.addAttachment("文件名.pdf", new File("/etc/file.pdf"));
// 发送
mailSender.send(mimeMessage);
log.info("邮件处理成功");
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值