spring发送邮件笔记
  ouxqUy9xyW8T 2023年11月02日 84 0



文章目录

  • 引入依赖
  • 配置
  • 代码
  • 附件url地址为空会不会报错
  • 接收方邮件地址错误会不会报错


引入依赖

推荐用spring集成依赖,不用一个包一个包找了。

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

配置

这里以qq为例:

spring:
  main:
    allow-bean-definition-overriding: true
  mail:
    host: smtp.qq.com
    port: 465
    protocol: smtps
    userName: 1111111@qq.com
    passWord: eyywqbcdfddd
    properties:
      mail:
        smtp:
          auth: false
          starttls:
            enable: false
            required: false

注:userName是发送方邮件地址,用自己的qq号就行。
password是授权码,这个要在qq邮箱开通下。

如果启动报错:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true

那么记得加这个配置(大意是解决类再次加载的问题):

spring:
  main:
    allow-bean-definition-overriding: true

代码

javax.mail.internet.MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = null;
helper = new MimeMessageHelper(mimeMessage, true);
URL url = new URL(request.getAttachmentUrl());
DataSource dataSource = new URLDataSource(url); // 附件地址为空会报错 MalformedURLException
helper.addAttachment(request.getAttachmentName(), dataSource); // 附件名为空不报错,会有个默认附件名
helper.setFrom(request.getFrom()); // 发送人
helper.setTo(request.getTo()); // 接收人
helper.setSubject(request.getSubject()); // 主题
helper.setText(request.getText(), true); // 正文
log.info("rest发送邮件开始"); // 这里无法toJson,会报错
mailSender.send(mimeMessage); // 不报错就是成功
log.info("rest发送邮件完成");

因为涉及到参数接收,最好弄个实体类,代码更整洁。实际mail有很多参数,但是常规来说,这些也够用了。

@Data
public class MailEntity{
private String subject;
private String from;
private String to;
private String text;
private String attachmentUrl;
private String attachmentName;
}

附件url地址为空会不会报错

会的,会报错MalformedURLException,这个在发送前的入参检查时就会报错。

接收方邮件地址错误会不会报错

不会,因为邮件是异步的,代码里的发送是发到邮件服务器,邮件服务器后续会发送给接收方,java代码肯定不能等这个反馈,所以不会报错。

但是如果地址错误,邮件的发送方会收到退回邮件。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   53   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   107   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
ouxqUy9xyW8T