linux邮件发送springboot,SpringBoot整合邮件发送

本节介绍SpringBoot项目如何快速配置和发送邮件,包括简单的邮件配置、发送简单邮件、发送HTML邮件、发送携带附件的邮件等。

一、邮箱配置

要确保使用的邮箱开启了客户端登录服务,以163邮箱为例:

f4b3ba5fcf4f7551483203a13ab647a2.png

e2f2cb3bc81020357907df6b9e9be365.png

注意在发送邮件的配置中,填写的用户名是邮箱地址,密码是这里的授权码。其他邮箱如QQ、企业邮箱也是类似的配置,不懂的建议百度哦,不是很复杂的。

下面我们直接进入示例吧:

二、简单邮件发送

创建一个SpringBoot项目,引入如下依赖:

org.springframework.boot

spring-boot-starter-mail

注:其他依赖按照自己的需求添加即可,如有问题可以参考示例项目。

填写配置信息:

server:

port: 8012

spring:

mail:

host: 'smtp.163.com'

username: 'xxx@163.com'

password: 'xxxx' # 授权码

编写测试接口:

@RestController

@RequestMapping(value = "email")

public class EmailAction {

@Value("${spring.mail.username}")

private String sendName;

private final JavaMailSender mailSender; // 也可以使用AutoWired

public EmailAction(JavaMailSender mailSender) {

this.mailSender = mailSender;

}

@PostMapping(value = "simple")

public String sendSimpleMsg(String msg, String email) {

if (StringUtils.isEmpty(msg) || StringUtils.isEmpty(email)) {

return "请输入要发送消息和目标邮箱";

}

try {

SimpleMailMessage mail = new SimpleMailMessage();

mail.setFrom(sendName);

mail.setTo(email);

mail.setSubject("这是一封简单邮件");

mail.setText(msg);

mailSender.send(mail);

return "发送成功";

} catch (Exception ex) {

ex.printStackTrace();

return "发送失败:" + ex.getMessage();

}

}

}

测试一下:

c45922ccee07fde3a252d38427cfeedb.png

三、HTML发送

除了普通的文本格式邮件,邮件还可以是HTML格式的,这样就可以自定义丰富的样式啦!

发送HTML邮件也很简单,在发送邮件时指定内容为HTML即可:

@PostMapping(value = "html")

public String sendHtmlMsg(String msg, String email) {

if (StringUtils.isEmpty(msg) || StringUtils.isEmpty(email)) {

return "请输入要发送消息和目标邮箱";

}

try {

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);

messageHelper.setFrom(sendName);

messageHelper.setTo(email);

messageHelper.setSubject("HTML邮件");

String html = "

Hello

this is a html email.

"

+ msg + "

";

messageHelper.setText(html, true);

mailSender.send(message);

return "发送成功";

} catch (MessagingException e) {

e.printStackTrace();

return "发送失败:" + e.getMessage();

}

}

427c75fcc6b20db5b91dec970330c30d.png

四、含附件的邮件发送

有时候需要发送携带附件的邮件,比如投递简历,通常会携带一个PDF文件。

我们这里在resources下添加一个PDF文件,然后发送邮件时携带这个文件:

@PostMapping(value = "mime_with_file")

public String sendWithFile(String msg, String email) {

if (StringUtils.isEmpty(msg) || StringUtils.isEmpty(email)) {

return "请输入要发送消息和目标邮箱";

}

try {

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);

messageHelper.setFrom(sendName);

messageHelper.setTo(email);

messageHelper.setSubject("一封包含附件的邮件");

messageHelper.setText(msg);

// 该文件位于resources目录下

// 文件路径不能直接写文件名,系统会报错找不到路径,而IDEA却能直接映射过去

// 文件路径可以写成相对路径src/main/resources/x.pdf,也可以用绝对路径:System.getProperty("user.dir") + "/src/main/resources/x.pdf"

File file = new File("src/main/resources/SpringBoot日志处理之Logback.pdf");

//File file = new File(System.getProperty("user.dir") + "/src/main/resources/SpringBoot日志处理之Logback.pdf");

System.out.println("文件是否存在:" + file.exists());

messageHelper.addAttachment(file.getName(), file);

mailSender.send(message);

return "发送成功";

} catch (MessagingException e) {

e.printStackTrace();

return "发送失败:" + e.getMessage();

}

}

测试一下:

7105787f7368642a39aff786a6c0f0ef.png

五、HTML含图片发送

如果HTML邮件包含图片等静态资源怎么办呢?即将图片显示在邮件中,这样邮件接收者就不用下载附件才能看到图片内容了。而且邮件内容也更加丰富了。 这个功能也很简单,使用addInline即可,可以这样做:

@PostMapping(value = "html_with_img")

public String sendHtmlWithImg(String msg, String email) {

if (StringUtils.isEmpty(msg) || StringUtils.isEmpty(email)) {

return "请输入要发送消息和目标邮箱";

}

try {

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);

messageHelper.setFrom(sendName);

messageHelper.setTo(email);

messageHelper.setSubject("带静态资源图片的HTML邮件");

String html = "

Hello

this is a html email.

"

+ msg + "

";

messageHelper.setText(html, true);

File file = new File("src/main/resources/wei.jpg");

messageHelper.addInline("myImg", file);

mailSender.send(message);

return "发送成功";

} catch (MessagingException e) {

e.printStackTrace();

return "发送失败:" + e.getMessage();

}

}

六、使用模板发送邮件

利用模板引擎,比如thymeleaf,还可以通过模板文件来发送邮件:

首先引入spring-boot-starter-thymeleaf依赖:

org.springframework.boot

spring-boot-starter-thymeleaf

在resources下新建一个templates文件夹,下面创建一个EmailTemplate.html文件:

邮件模板

Hello, this is your msg:

@Autowired

private TemplateEngine templateEngine;

@PostMapping(value = "html_with_template")

public String sendHtmlByTemplate(String msg, String email) {

if (StringUtils.isEmpty(msg) || StringUtils.isEmpty(email)) {

return "请输入要发送消息和目标邮箱";

}

try {

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);

messageHelper.setFrom(sendName);

messageHelper.setTo(email);

messageHelper.setSubject("使用HTML模板文件发送邮件");

Context context = new Context();

context.setVariable("msg", msg);

messageHelper.setText(templateEngine.process("EmailTemplate", context), true);

mailSender.send(message);

return "发送成功";

} catch (MessagingException e) {

e.printStackTrace();

return "发送失败:" + e.getMessage();

}

}

15c5f6280543f004ed6070c92e5d3b26.png

交流学习

公众号:猿生物语,"分享技术,也感悟人生",欢迎关注!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值