465端口发送邮件

/ Spring Boot / 没有评论 / 43浏览

目前各大云服务提供商(已知阿里云、华为云)基本上封了默认的邮件端口25,推荐用465端口发送邮件。

小知识

465端口采用加密方式发送邮件,因此我们的代码需要加上一段ssl认证滴配置。

上代码

以qq邮箱为例,spring中使用:

@Test
public void email() {
    JavaMailSenderImpl sender = new JavaMailSenderImpl();
    sender.setHost("smtp.qq.com");
    sender.setPort(465);
    sender.setUsername("qq号");
    sender.setPassword("密码(开启IMAP/SMTP服务颁发的授权码)");
    sender.setDefaultEncoding("UTF-8");

    Properties properties = new Properties();
    properties.setProperty("mail.smtp.auth", "true");//开启认证
//        properties.setProperty("mail.debug", "true");//启用调试
//        properties.setProperty("mail.smtp.socketFactory.port", "465");//设置ssl端口
//        properties.setProperty("mail.smtp.socketFactory.fallback", "false");
    properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    sender.setJavaMailProperties(properties);


    SimpleMailMessage mailMessage = new SimpleMailMessage();
    mailMessage.setFrom("qq号");
    mailMessage.setSubject("====后台管理项目异常====");
    mailMessage.setText("i am down, help me!!!");
    mailMessage.setTo("接收者的邮箱");

    sender.send(mailMessage);
}

spring-boot

spring boot发送邮件

依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.10.RELEASE</version>
</dependency>

配置

application.yml

server:
  port: 8081

spring:
  # mail配置
  mail:
    host: smtp.qq.com
    # 登录账号
    username: qq号
    # 密码(开启IMAP/SMTP服务颁发的授权码)
    password: xxx
    properties:
      mail:
        debug: false
        smtp:
          auth: true
          port: 465
          ssl:
            enable: true
            socketFactory: sf

使用

/**
 * 用yml里面的配置帮你配置了一个JavaMailSenderImpl,注入就好了
 */
@Autowired
private JavaMailSender sender;

@Test
public void smartMail() {
    SimpleMailMessage mailMessage = new SimpleMailMessage();
    mailMessage.setFrom("1345545983@qq.com");
    mailMessage.setSubject("====后台管理项目异常====");
    mailMessage.setText("i am down, help me!!!");
    mailMessage.setTo("xuanbo.wang01@hand-china.com");

    sender.send(mailMessage);
}

emm,真香~