JavaMail 给多人发送邮件

本文详细介绍如何使用JavaMail在不依赖额外邮件服务器的情况下,实现邮件的批量发送功能。通过实例代码展示了配置邮件发送参数、连接SMTP服务器及发送邮件的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaMail发送邮件 多人发送

  1. 在我们开发过程中经常会用到邮件,比如 : 发送通知,找回密码 验证码  等等,再次总结了使用javaMail发送邮件,无需单间james等邮件服务器也可发送邮件

  2. javaMail官网 在里面可以找到详细的文档以及案例和jar包

  3. 我们都知道在前后端交互都是有协议的,http协议,JavaMail也有自己的协议,SMTP/POP3和IMAP

  4. 使用javaMail前提是可以连接外网.

  5. 废话不多说,直接上案例:

    1.   导入依赖,在没使用maven的话导入相应的jar包,点此下载

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

       

    2. 测试案例:这是一个模板工具

      package com.bgi.util;
      
      import org.springframework.core.io.ClassPathResource;
      
      import javax.mail.Address;
      import javax.mail.Session;
      import javax.mail.Transport;
      import javax.mail.internet.InternetAddress;
      import javax.mail.internet.MimeMessage;
      import java.io.IOException;
      import java.util.Date;
      import java.util.Properties;
      
      public class EmailUtil {
         //获取属性文件中的值,建议把配置的信息放到属性文件中,方便修改和获取
          private static Properties properties = new Properties();
          static{
              try {
                 //加在属性文件
                  properties.load(new ClassPathResource("properties/email.properties").getInputStream());
              } catch (IOException e) {
              }
          }
          public static    String SMTPSERVER = properties.getProperty("smtp.server"); //从属性文件中获取值其中key为smtp.server
          public static  String SMTPPORT = properties.getProperty("smtp.port");   //端口号 465  465  465   不是456
          public  static  String ACCOUT = properties.getProperty("smtp.account");//账户名:我的是163账户,此账户必须在设置中开启授权码授权
          public  static  String PWD = properties.getProperty("smtp.pwd");   //授权密码
      
          public static String users = properties.getProperty("email.users");   //这里是发送给多个用户多个用户用都好分割xxx@xx.com,xxx@xx.com
          public static void  sendEmail(String content){
              try {
              // 创建邮件配置
              Properties props = new Properties();
              props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
              props.setProperty("mail.smtp.host", SMTPSERVER); // 发件人的邮箱的 SMTP 服务器地址
              props.setProperty("mail.smtp.port", SMTPPORT);
              props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
              props.setProperty("mail.smtp.auth", "true"); // 需要请求认证
              props.setProperty("mail.smtp.ssl.enable", "true");// 开启ssl
              // 根据邮件配置创建会话,注意session别导错包
              Session session = Session.getDefaultInstance(props);
              // 开启debug模式,可以看到更多详细的输入日志
              session.setDebug(true);
              //创建邮件
              MimeMessage message = createEmail(session,users,content);   //将用户和内容传递过来
              //获取传输通道
              Transport transport = session.getTransport();
              transport.connect(SMTPSERVER,ACCOUT, PWD);
              //连接,并发送邮件
              transport.sendMessage(message, message.getAllRecipients());
              transport.close();
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
      
          public static MimeMessage createEmail(Session session,String users,String content) throws Exception {
              // 根据会话创建邮件
              MimeMessage msg = new MimeMessage(session);
              // address邮件地址, personal邮件昵称, charset编码方式
              InternetAddress fromAddress = new InternetAddress(ACCOUT,
                      "中间件推送", "utf-8");
              // 设置发送邮件方
              msg.setFrom(fromAddress);
      //        单个可以直接这样创建
      //        InternetAddress receiveAddress = new InternetAddress();
              // 设置邮件接收方
              Address[] internetAddressTo = new InternetAddress().parse(users);
         //type:
      要被设置为 TO, CC 或者 BCC,这里 CC 代表抄送、BCC 代表秘密抄送。举例:Message.RecipientType.TO
              msg.setRecipients(MimeMessage.RecipientType.TO,  internetAddressTo);
              // 设置邮件标题
              msg.setSubject("测试标题", "utf-8");
              msg.setText(content);
              // 设置显示的发件时间
              msg.setSentDate(new Date());
              // 保存设置
              msg.saveChanges();
              return msg;
          }
      
      }

       

    3. email.properties

      smtp.server=smtp.163.com
      smtp.port=465
      smtp.account=xxx@163.com
      smtp.pwd=xxxxx
      
      email.users=xxx@163.com,xxxx@qq.com,xxx@xx.cn

       

    4. 163邮箱开启授权:

         163邮箱示例 

    1. qq邮箱开启授权: 点击生成授权码,即可生成授权码

image

 

到此已经可以发送邮件了,如果需要添加附件,可以自行研究

转载自:https://www.cnblogs.com/tianliuyang/p/9486420.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值