sbt中使用JavaMailSender发送邮件

2021/5/25 14:27:48

本文主要是介绍sbt中使用JavaMailSender发送邮件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Spring提供了非常好用的JavaMailSender接口实现邮件发送。

简单实现

在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖:

<!--引入发送邮件的启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

如其他自动化配置模块一样,在完成了依赖引入之后,只需要在application.properties中配置相应的属性内容。

下面以QQ邮箱为例,在application.properties中加入如下配置(注意替换发件人邮箱号和密码):

#发件人邮箱
spring.mail.username=用户名
#邮箱密码(授权码)
spring.mail.password=密码
#邮箱主机
spring.mail.host=smtp.qq.com
#配置安全连接
spring.mail.properties.mail.smtp.ssl.enable=true

通过写个controller控制器来实现发送一封简单邮件:

@RestController
public class HelloSbtController {
@Autowired
JavaMailSenderImpl mailSender;
@GetMapping("/sendEmail")
    public String sendEmail() {
        //设置邮件信息
        SimpleMailMessage message = new SimpleMailMessage();
  //主题
        message.setSubject("一封简单邮件");
  //内容
        message.setText("使用SpringBoot发送一封简单邮件");
        //收件人
        message.setTo("xxxxxxxxx@qq.com");
        //发件人
        message.setFrom("xxxxxxxxx@qq.com");

        //发送邮件
        mailSender.send(message);

        return "邮件发送成功";
    }

运行代码,在浏览器地址栏里输入localhost:8088/sendEmail,看见页面显示,“邮件发送成功”。

(注意:要先在application.properties里配置端口号:

server.port=8088

到这里,一个简单的邮件发送就完成了。

由于Spring Boot的starter模块提供了自动化配置,所以在引入了spring-boot-starter-mail依赖之后,会根据配置文件中的内容去创建JavaMailSender实例,因此我们可以直接在需要使用的地方直接@Autowired来引入邮件发送对象。

进阶使用

在上例中,我们通过使用SimpleMailMessage实现了简单的邮件发送,但是实际使用过程中,我们还可能会带上附件等。这个时候我们就需要使用MimeMessage来设置复杂一些的邮件内容。

发送附件

这里使用配置文件来实现发送邮件,封装邮件功能

创建一个邮件实体类(@DATA 这个注解需要在pom.xml中加入lombok依赖):

/**
 * @Auther: Administrator
 * @Date: 2021年 05月22日 16:56
 * @Description: 邮件实体类
 */
@Data
@Component
@ConfigurationProperties(prefix = "email")
public class Email {
    // 邮件主题
    private String subject;
    // 内容
    private String content;
    // 发件人
    private String from;
    // 收件人
    private String to;
    // 附件地址
    private String filePath;

}

 

 

创建一个EmailUtil工具类:

/**
 * @Auther: Administrator
 * @Date: 2021年 05月22日 17:24
 * @Description: 发送邮件工具类
 */
public class EmailUtil {
    public static void sendMail(JavaMailSender javaMailSender,Email email) throws MessagingException {
            // 使用JavaMail的MimeMessage,支付更加复杂的邮件格式和内容
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            // 创建MimeMessageHelper对象,处理MimeMessage的辅助类
            MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true);
            // 使用辅助类MimeMessage设定参数
            // 收件人
            messageHelper.setTo(email.getTo());
            // 发件人
            messageHelper.setFrom(email.getFrom());
            // 邮件主题
            messageHelper.setSubject(email.getSubject());
            // 邮件内容
            messageHelper.setText(email.getContent());
            // 获取附件路径
            FileSystemResource file = new FileSystemResource(new File(email.getFilePath()));
            // 获取附件名
            String fileName = email.getFilePath().substring(email.getFilePath().lastIndexOf(File.separator));
            // 添加附件
            messageHelper.addAttachment(fileName, file);
            // 发送邮件
            javaMailSender.send(mimeMessage);
    }
}
 

 

在上面的controller中加入如下方法(通过MimeMessageHelper来发送一封带有附件的邮件):

@Autowired
private Email email;
@Resource
private JavaMailSenderImpl javaMailSender;
@GetMapping("/sendEmail")
public String sendEmail() throws MessagingException {
    EmailUtil.sendMail(javaMailSender, email);
    return "邮件发送成功";
}

 

创建一个配置文件application.yml(它与application.properties互补,注意格式),填上我们需要发送的邮件相关内容:

email:
  subject: (邮件主题)
  content: (邮件内容)
  from: (发件人)
  to: (收件人)
  filePath: (附件地址)

 

运行代码,在浏览器地址栏里输入localhost:8088/sendEmail,看见页面显示,“邮件发送成功”。
到这里,一个带附件的邮件发送就完成了。



这篇关于sbt中使用JavaMailSender发送邮件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程