自学SpringBoot学习笔记--邮件发送(一)

使用JavaMailSender实现

添加依赖

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

配置文件

#邮件发送
Spring:
  mail:
    host: smtp.163.com
    username: ****@163.com
    password: ****
    default-encoding: UTF-8
    smtp:
      auth: true
      starttls:
        enable: true
        required: true

host 为邮箱的smtp地址 若使用qq邮箱 则换成smtp.qq.com 使用别的邮箱可自行百度

username 是邮箱账号

password 是授权号 如我用的163邮箱 就去邮箱官网 设置--》授权即可,不同邮箱可能不同,总之不要填成你的密码就好

为了便于传参和严谨,我自己创建了一个Entity实体类用来传参

public class MailEntity {
    private String email;
    private String subject;
    private String content;
    private String template;
    private Map<String,Object> priMap;

    private String to;
    private String from;

省略了get set方法

然后创建一个Util类,便于以后搭建项目直接调用。

package com.learn.paomo.util;

import com.learn.paomo.entity.MailEntity;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

@Component
public class SendMailUtil {
    @Resource
    private JavaMailSender mailSender;
    private  static  JavaMailSender mailSender1;
    @PostConstruct
    public void init(){
        this.mailSender1=mailSender;
    }
   /* @Value("${spring.mail.username}")
    private static String from;*/

    /*发送纯文本邮件*/
    public static String sendText(MailEntity mail){
        try {
            SimpleMailMessage message = new SimpleMailMessage();
            message.setFrom("****@163.com");
            message.setTo(mail.getTo());
            message.setSubject(mail.getSubject());
            message.setText(mail.getContent());
            mailSender1.send(message);
            return "邮件发送成功";
        }catch(Exception e){
            return "邮件发送失败,原因:"+e.getMessage();
        }
    }

}

由于是写了util类,便于直接调用将属性写成了static的方法,所以方法前面的属性定义有所变化。如果是静态属性不能用@Autowired,会发现注入不进来,那如果不用静态下面方法又不能引用。所以用到了上述赋值方法。

controller类测试:

package com.learn.paomo.controller;

import com.learn.paomo.entity.MailEntity;
import com.learn.paomo.util.SendMailUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/mail")
public class SendMailController {

    @RequestMapping("/sendmail")
    public Object sendemail() throws Exception{
        MailEntity mail=new MailEntity();
        mail.setTo("****@qq.com");
        mail.setSubject("测试标题");
        mail.setContent("测试内容");
        String status=SendMailUtil.sendText(mail);
        return status;
    }

}

用自己的QQ邮箱进行了一下收件测试

不方便截图。这里就当是测试成功了吧。

下一篇准备结合FreeMarker进行下邮件模板的编写,以及邮件发送图片表格等……ojbk!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值