美文网首页
SpringBoot整合JavaMail通过阿里云企业邮箱发送邮

SpringBoot整合JavaMail通过阿里云企业邮箱发送邮

作者: chenzan | 来源:发表于2019-04-11 11:50 被阅读0次

JavaMail是Java开发中邮件处理的开源类库,支持常用协议如:SMTP、POP3、IMAP

一、SpringBoot整合

1、需要在pom文件中添加依赖spring-boot-starter-mail

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

构建项目,加载相关jar包

2、在application.yml中配置邮件发送的相关信息

spring:
   mail:
      host: smtp.mxhichina.com      #阿里云发送服务器地址
      port: 25                      #端口号
      username: XXX@XXXX.com        #发送人地址 
      password: ENC(Grg2n2TYzgJv9zpwufsf37ndTe+M1cYk)   #密码

3、编写邮件发送工具类MailUtil

MailUtil.java

/**
 * @author chenzan
 * @version V1.0
 * @description 邮件发送
 */

@Component
public class MailUtil {
    @Autowired
    JavaMailSendermailSender;
    @Autowired
    MailPropertiesmailProperties;
    /**
    * 发送邮件测试方法
    */
    public void sendMail(MailBean mailBean) {
        SimpleMailMessage mimeMessage =new SimpleMailMessage();
        mimeMessage.setFrom(mailProperties.getUsername());
        mimeMessage.setTo(mailBean.getToAccount());
        mimeMessage.setSubject(mailBean.getSubject());
        mimeMessage.setText(mailBean.getContent());
        mailSender.send(mimeMessage);
    }

   /**
    * 发送邮件-附件邮件
    * @param boMailBean
    */
    public boolean sendMailAttachment(MailBean mailBean) {
    try {
            MimeMessage mimeMessage =mailSender.createMimeMessage();
            MimeMessageHelper helper =new MimeMessageHelper(mimeMessage, true);
            helper.setFrom(mailProperties.getUsername());
            helper.setTo(boMailBean.getToAccount());
            helper.setSubject(mailBean.getSubject());
            helper.setText(mailBean.getContent(), true);
            // 增加附件名称和附件
            helper.addAttachment(MimeUtility.encodeWord(mailBean.getAttachmentFileName(), "utf-8", "B"), mailBean.getAttachmentFile());
            mailSender.send(mimeMessage);
            return true;
        }catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
}

MailBean.java

/**
 * @author chenzan
 * @version V1.0
 */
@Data
public class MailBean {

private Stringsubject;
    private Stringcontent;
    private StringtoAccount;
    private FileattachmentFile;
    private StringattachmentFileName;
}

4.发送

String email = "XXX@email.com";
String content="测试内容";
String subject = "测试主题";
MailBean mailBean =new MailBean ();
mailBean .setToAccount(email);
boMailBean.setSubject(subject );
boMailBean.setContent(content);
boolean resultSend =mailUtil.sendMailAttachment(boMailBean);

二、查看阿里云邮箱设置
支持SMTP/POP3/IMAP功能,轻松通过客户端软件(outlook、foxmail等)收发邮件。 详细设置 点此查看
三、SpringBoot中集成了jasypt在一定程度上保证密码的安全
1、添加依赖

<properties>
    <jasypt.version>1.9</jasypt.version>
</properties>
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>${jasypt.version}</version>
</dependency>

2、在application.yml中配置加密密钥

jasypt:
  encryptor:
    password: XXXXXXX

3、生成密码对应的密文

@RunWith(SpringRunner.class)
@SpringBootTest
public class EncryptTests {
    @Autowired
    StringEncryptor stringEncryptor;

    @Test
    public void encryptPwd() {
        String result = stringEncryptor.encrypt("XXXX");
        System.out.println(result);
    }
}

4、密文替换

在ENC()中添加对应密文

password: ENC(Grg2n2TYzgJv9zpwufsf37ndTe+M1cYk)   #密码

相关文章

网友评论

      本文标题:SpringBoot整合JavaMail通过阿里云企业邮箱发送邮

      本文链接:https://www.haomeiwen.com/subject/umqtwqtx.html