发送邮件工具类

方式一:

添加依赖

 <dependency>
     <groupId>com.sun.mail</groupId>
     <artifactId>javax.mail</artifactId>
     <version>1.6.2</version>
 </dependency>

发送QQ邮件工具类

 public class EmailUtil {
 ​
     public static void send(String recipient, String subject, String content) {
         Properties props = new Properties();
         // 开启协议
         props.setProperty("mail.transport.protocol", "smtp");
         // 主机名
         props.setProperty("mail.smtp.host", "smtp.qq.com");
         // 是否开启权限控制
         props.setProperty("mail.smtp.auth", "true");
         // true表示在发送邮件时会在控制台上打印发送时的信息
         props.setProperty("mail.debug", "true");
 ​
         // Session表示程序到邮件服务器之间的一次会话
         Session session = Session.getInstance(props);
         // 创建邮件对象
         Message msg = new MimeMessage(session);
         try {
             // 填写发送人的QQ邮箱地址
             msg.setFrom(new InternetAddress("发送人QQ邮箱地址"));
             // 收件人
             msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
             // 邮件的主题内容
             msg.setSubject(subject);
             // 邮件的正文内容
             msg.setText(content);
 ​
             Transport tran = session.getTransport();
             //此处不是QQ的密码,是开启POP3/SMTP时生成的authorization code
             tran.connect("发送人QQ的", "POP3/SMTP授权码");
             tran.sendMessage(msg, msg.getAllRecipients());
         } catch (MessagingException e) {
             e.printStackTrace();
         }
     }
 ​
     /**
      * 测试
      **/
     public static void main(String[] args) {
         String subject = "来自***邮箱";
         String content = "***";
         EmailUtil.send("***@qq.com", subject, content);
     }
 }

方式二:使用hutool工具类

添加依赖

 <dependency>
     <groupId>com.sun.mail</groupId>
     <artifactId>javax.mail</artifactId>
     <version>1.6.2</version>
 </dependency>
 ​
 <dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.8.3</version>
 </dependency>

创建工具类

 import cn.hutool.extra.mail.MailAccount;
 import cn.hutool.extra.mail.MailUtil;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 ​
 import java.util.List;
 ​
 /**
  * @author JngKang
  * @date 2022-06-20 18:39
  */
 @Component
 public class EmailUtil {
 ​
     /**
      * 邮件服务器
      */
     @Value("${email.host}")
     private String host;
 ​
     /**
      * 邮件服务器端口,默认25
      */
     @Value("${email.port:25}")
     private Integer port;
 ​
     /**
      * 发送方邮箱地址
      */
     @Value("${email.form}")
     private String form;
 ​
     /**
      * 发送方邮箱账号
      */
     @Value("${email.user}")
     private String user;
 ​
     /**
      * 发送方邮箱密码
      */
     @Value("${email.pwd}")
     private String pwd;
 ​
     /**
      * @param mailTo 接收方邮箱列表
      * @param subject 标题
      * @param content 内容
      * @param isHtml 是否转化为html格式
      */
     public void send(List<String> mailTo, String subject, String content, boolean isHtml) {
         MailAccount account = new MailAccount();
         account.setHost(host);
         account.setPort(port);
         account.setAuth(true);
         account.setFrom(form);
         account.setUser(user);
         account.setPass(pwd);
         MailUtil.send(account, mailTo, subject, content, isHtml);
     }
 ​
 }

添加配置信息

 email:
     host: smtp.qq.com
     port: 25
     form: ***@qq.com
     # 注:user是邮箱账号,不用带邮箱地址后缀,但是阿里云邮箱必须要带
     user: ***
     pwd: ******

测试

 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit.jupiter.SpringExtension;
 ​
 import javax.annotation.Resource;
 import java.util.Collections;
 ​
 @SpringBootTest
 @ExtendWith(SpringExtension.class)
 class EmailUtilTest {
 ​
     @Resource
     EmailUtil emailUtil;
 ​
     @Test
     void email() {
         emailUtil.send(Collections.singletonList("***@outlook.com"), "test", "test", false);
     }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值