SpringBoot 快速上手发送邮件 配置+注解方式

简介

使用SpringBoot配置+注解方式,快速上手后端发送邮件功能,最简单的应用——可以用来发验证码。

一、pom文件导入依赖

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

二、配置yml文件

或者properties文件

spring:
  mail:
    host: smtp.qq.com # 假设使用QQ的smtp邮件服务器,需要QQ邮箱开启授权
    username: emailname # 邮箱名
    password: **** # 邮箱授权码,需要开启pop3/smtp/imap服务
    default-encoding: utf-8

三、写一个简单的邮件管理类

使用@Component注解,自动装载为一个bean

@Component
public class EmailManager {

	// 这里填邮件发送方的email地址
    final static String emailSender = "xxxx@qq.com";

    @Autowired
    private JavaMailSender mailSender;

	//emailReceiver为邮件收取方的email地址,code为验证码
    public void sendMail(String emailReceiver, String code) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(emailSender);
        simpleMailMessage.setTo(emailReceiver);
        simpleMailMessage.setSubject("XX应用验证码");
        simpleMailMessage.setText("您本次的验证码为" + code);
        mailSender.send(simpleMailMessage);
    }
}

四、在controller里写一个获取验证码的接口

    @Autowired
    private EmailManager emailManager;

    //获取验证码接口
    @RequestMapping(value = "/getcode", method = {RequestMethod.POST}, consumes = {CONTENTTYPE})
    @ResponseBody
    public String getCode(@RequestParam(name = "email") String email) {
        //生成6位随机验证码
        int randomInt = new Random().nextInt(999999) + 10000;
        String code = String.valueOf(randomInt);
        //使用session将code与email关联
        httpServletRequest.getSession().setAttribute(email, code);
        //将验证码通过邮箱通道发送给用户
        emailManager.sendMail(email, code);
        log.info("email = {} & code = {}", email, code);
        return "success";
    }

五、应用部署到阿里云服务器的特殊处理

若将应用部署在阿里云等服务器上,默认情况下是发不出去的。
由于安全等原因,阿里云服务器将25端口禁用掉了,因此需要指定其他端口号(如465)。
另外可以加一个外挂的配置文件,这样不需要重新打包jar再上传,只需要重新启动jar即可。

# 在jar包同级目录下,新建一个application.properties,内容如下:
spring.mail.properties.mail.smtp.ssl.trust=smtp.qq.com
#SSL证书Socket工厂
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
#使用SMTPS协议465端口
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=tru


# 然后启动jar时,指定外挂配置文件即可
java -jar xx.jar --spring.config.addition-location=application.properties
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值