• java发送邮件


     

    前言

    借用hutool工具,实现多账号发送邮件

    相关实现

    maven依赖

    Hutool对所有第三方都是可选依赖,因此在使用MailUtil时需要自行引入第三方依赖。

    1. <dependency>
    2. <groupId>cn.hutool</groupId>
    3. <artifactId>hutool-all</artifactId>
    4. <version>5.7.15</version>
    5. </dependency>
    6. <dependency>
    7. <groupId>com.sun.mail</groupId>
    8. <artifactId>javax.mail</artifactId>
    9. <version>1.6.2</version>
    10. </dependency>

    简化需求场景

    由于hutool中MailAccount没有合适得构造方法构建对象,我就创建了一个子类MailAccountSon继承MailAccount

    在构建MailAccountSon时并构建MailAccount的相关属性值

    当然你可以直接new MailAccount(),但是我觉得麻烦并且和账户耦合度很高

    官方:

    除了使用配置文件定义全局账号以外,MailUtil.send方法同时提供重载方法可以传入一个MailAccount对象,这个对象为一个普通Bean,记录了邮件服务器信息。

    1. MailAccount account = new MailAccount();
    2. account.setHost("smtp.yeah.net");
    3. account.setPort("25");
    4. account.setAuth(true);
    5. account.setFrom("hutool@yeah.net");
    6. account.setUser("hutool");
    7. account.setPass("q1w2e3");
    8. MailUtil.send(account, CollUtil.newArrayList("hutool@foxmail.com"), "测试", "邮件来自Hutool测试", false);

     talk is cheap,look my code!

    代码实现

    MailAccountSon类,其中的构造方法根据需求添加,如果你是企业邮箱,参考hutool定义对应的构造函数

    1. /**
    2. * @author Xuewei.Zhang
    3. * @date 2022/11/24
    4. */
    5. public class MailAccountSon extends MailAccount {
    6. public MailAccountSon(String host, Integer port, Boolean auth, String from, String user, String pass) {
    7. super.setHost(host);
    8. super.setPort(port);
    9. super.setAuth(auth);
    10. super.setFrom(from);
    11. super.setUser(user);
    12. super.setPass(pass);
    13. }
    14. public MailAccountSon(String host, Integer port, Boolean auth, String from, String pass) {
    15. super.setHost(host);
    16. super.setPort(port);
    17. super.setAuth(auth);
    18. super.setFrom(from);
    19. super.setPass(pass);
    20. }
    21. public MailAccountSon(String from, String pass) {
    22. super.setFrom(from);
    23. super.setPass(pass);
    24. }
    25. }

    SYS_EMAIL_MAP里面存放了我多个邮件账号实例,我将使用他们发送邮件

    1. public interface SysConstants {
    2. String EMAIL_126 = "126";
    3. String EMAIL_qq = "qq";
    4. // 邮件服务器
    5. Map SYS_EMAIL_MAP = new HashMap() {{
    6. put(EMAIL_126,new MailAccountSon("zhangxuewei0303@126.com","CTLTO***K****J") );
    7. put(EMAIL_qq,new MailAccountSon("2289998609@qq.com","rp****oo***bhj") );
    8. }};
    9. }

    测试QQ

    1. public static void main(String[] args) {
    2. MailAccount mailAccount = SysConstants.SYS_EMAIL_MAP.get(SysConstants.EMAIL_qq);
    3. String msg = MailUtil.send(mailAccount, CollUtil.newArrayList("1263944101@qq.com"), "测试", "邮件来自erp_cloud测试", false);
    4. log.info(msg);
    5. }

    打印信息

    1. Connected to the target VM, address: '127.0.0.1:13216', transport: 'socket'
    2. 16:57:58.834 [main] INFO com.zxw.common.web.util.EmailUtil - <2040352617.1.1669280277966@LAPTOP-ORGH9L27.mshome.net>
    3. Disconnected from the target VM, address: '127.0.0.1:13216', transport: 'socket'

    测试126

    1. public static void main(String[] args) {
    2. MailAccount mailAccount = SysConstants.SYS_EMAIL_MAP.get(SysConstants.EMAIL_126);
    3. String msg = MailUtil.send(mailAccount, CollUtil.newArrayList("1263944101@qq.com"), "测试", "邮件来自erp_cloud测试", false);
    4. log.info(msg);
    5. }

    打印信息

    1. Connected to the target VM, address: '127.0.0.1:1431', transport: 'socket'
    2. 17:18:13.025 [main] INFO com.zxw.common.web.util.EmailUtil - <2040352617.1.1669281492247@LAPTOP-ORGH9L27.mshome.net>
    3. Disconnected from the target VM, address: '127.0.0.1:1431', transport: 'socket'

  • 相关阅读:
    Mongo(5):Docker下安装Mongo4.2(挂载配置文件和数据)
    小程序实现一个全局的loadding效果
    vue 如何预览pdf文件?
    LogBack的日志报错解决办法 org.xml.sax.SAXNotRecognizedException
    java常用下载官网
    Mysql中的not in和null
    GPT语言模型
    HCIE-容器docker
    SpringBoot项目之间相互引用
    弹窗示例(小白示例)
  • 原文地址:https://blog.csdn.net/Mr_ZhangAdd/article/details/128022343