SpringBoot发送邮件附件 详细说明

Spring Boot 对于发送邮件这种常用功能也提供了开箱即用的 Starter:spring-boot-starter-mail

通过这个 starter,只需要简单的几行配置就可以在 Spring Boot 中实现邮件发送,可用于发送验证码、账户激活等等业务场景。

我只用了qq邮箱作为案例,其他邮箱也差不多步骤

1.开启邮箱授权

2.项目添加依赖

在 项目pom.xml 引入相关依赖

spring-boot-starter-mail:这个启动器内部封装了发送邮件的代码,必须引入的。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

3.在 application.yaml 中配置属性。

  mail:
    # 指定邮件服务器地址
    host: smtp.qq.com
    # 登录账户
    username: xxx@qq.com
    # 登录密码 就是刚刚获取依赖码
    password: xxxxxx
    # 端口
    port: 465
    # 默认编码
    default-encoding: UTF-8
    # 使用的协议
    protocol: smtps
    # 其他的属性
    properties:
      "mail.smtp.connectiontimeout": 5000
      "mail.smtp.timeout": 3000
      "mail.smtp.writetimeout": 5000
      "mail.smtp.auth": true
      "mail.smtp.starttls.enable": true
      "mail.smtp.starttls.required": true

4.发邮件前置工作

配置javaBean service servicImpl  control 工作

注意:这些不是需要一模一样的,完全可以自己调整

JavaBean

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Email {
    private String email; // 要接受的邮箱
    private String span; // 标题
    private String content; // 文本 或者 html 代码
}

service

public interface EmailService {
    /**
     * 发送文本邮件
     * @param to 收件人
     * @param subject 主题
     * @param content 内容
     */
    void sendSimpleMail(String to, String subject, String content) throws MessagingException, UnsupportedEncodingException;

}

serviceImpl

@Service
@Transactional
public class EmailServiceImpl implements EmailService {

    @Autowired
    private JavaMailSender javaMailSender;

    @Override
    public void sendSimpleMail(String to, String subject, String content) throws MessagingException, UnsupportedEncodingException {
        // 创建一个邮件消息
        MimeMessage message = javaMailSender.createMimeMessage();
        // 创建
        MimeMessageHelper helper = new MimeMessageHelper(message,false);
        // 发件人邮箱和名称
        helper.setFrom("xxx@qq.com","邮件名");
        // 收件人邮箱
        helper.setTo(to);
        // 邮件标题
        helper.setSubject(subject);
        // 邮件正文,第二个参数表示是否是HTML正文
        helper.setText(content,false); // 第一个参数是传过去的值 第二个是否是html格式

        // 发送
        javaMailSender.send(message);

    }



}

control

    @Resource
    private EmailService emailService;

    @PostMapping("/span")
    public BaseResult<String> sendSimpleEmail(Email email) throws MessagingException, UnsupportedEncodingException {
      emailService.sendSimpleMail(email.getEmail(), email.getSpan(),email.getContent() );
      return BaseResult.ok("已发送");
    }

首先,通过 javaMailSender 的 createMimeMessage 创建一个 MimeMessage 对象,表示邮件。

接着创建 MimeMessageHelper 对象,第二个 boolean 参数表示,是否是一个 Multipart 邮件(带有附件)。

然后,通过 helper 对象,设置邮件的发件人邮箱和名称、收件人、主题、内容等信息。注意,setText 方法第二个参数表示内容是否是 html 正文。本例中,正文使用了一个 strong HTML 标签。

执行测试,发送邮件。然后进入收件箱查看:

测试

更多复杂的功能可以查看SpringBoot官网

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值