基于Java实现简单的邮件群发功能

 更新时间:2022年05月10日 11:24:34   作者:洛阳泰山  
这篇文章主要为大家详细介绍了如何利用Java语言编写一个简单的工具类,可以实现邮件群发功能。文中的示例代码讲解详细,需要的可以参考一下

pom文件引入第三方依赖

		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4</version>
		</dependency>
		<!--lombok-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

java代码如下

 
import lombok.Data;
 
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
 
/**
 * Created by tarzan liu on 2021/5/9.
 */
public abstract class EmailUtil {
 
    private static final Session session;
 
    private static final EmailAuthenticator authenticator;
 
    static {
        InputStream inputStream = null;
        try {
            inputStream = EmailUtil.class.getResourceAsStream("/email.properties");
            Properties properties = new Properties();
            properties.load(inputStream);
 
            authenticator = new EmailAuthenticator();
            String username = properties.getProperty("email.username");
            authenticator.setUsername(username);
 
            String password = properties.getProperty("email.password");
            authenticator.setPassword(password);
 
            String smtpHostName = "smtp." + username.split("@")[1];
            properties.put("mail.smtp.auth", "true");
            properties.put("mail.smtp.host", smtpHostName);
 
            session = Session.getInstance(properties, authenticator);
        } catch (Exception e) {
            throw new RuntimeException("init error.");
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
 
    private EmailUtil() { }
 
    /**
     * 群发邮件方法
     */
    private static void massSend(List<String> recipients, SimpleEmail email) throws MessagingException {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(authenticator.getUsername()));
        InternetAddress[] addresses = new InternetAddress[recipients.size()];
        for (int index = 0; index < recipients.size(); index ++) {
            addresses[index] = new InternetAddress(recipients.get(index));
        }
        message.setRecipients(RecipientType.TO, addresses);
        message.setSubject(email.getSubject());
        message.setContent(email.getContent(), "text/html;charset=utf-8");
 
        Transport.send(message);
    }
 
    /**
     * 发送邮件
     */
    public static void send(String recipient, SimpleEmail email) throws MessagingException {
        List<String> recipients = new ArrayList<>();
        recipients.add(recipient);
        massSend(recipients, email);
    }
 
 
    //可以单独建一个类
    @Data
    public static class SimpleEmail {
        private String subject;
        private String content;
    }
 
 
    public static void main(String[] args) throws Exception {
        SimpleEmail simpleEmail = new SimpleEmail();
        simpleEmail.setSubject("今天你学习了么?");
        simpleEmail.setContent("今天你写博客了么");
        send("1334512682@qq.com", simpleEmail);
    }
}

email.properties 系统邮箱配置

email.username=###@163.com
email.password=###

你的邮箱账号和密码,也可以省去配置文件,直接把账号密码写死在代码。

运行测试

右键run 运行主方法。

将发送的邮箱绑定到微信上,还能实现微信提醒功能!

到此这篇关于基于Java实现简单的邮件群发功能的文章就介绍到这了,更多相关Java邮件群发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 通过实例学习JAVA对象转成XML输出

    通过实例学习JAVA对象转成XML输出

    这篇文章主要介绍了通过实例学习JAVA对象转成XML输出,做流程图的项目时,新的流程定义为xml的,需要对xml与java对象进行互转,下面我们来深入学习,需要的朋友可以参考下
    2019-06-06
  • JDK8 new ReentrantLock((true)加锁流程

    JDK8 new ReentrantLock((true)加锁流程

    这篇文章主要介绍了java面试中常遇到的问题JDK8 new ReentrantLock((true)加锁流程示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • SpringBoot 异步线程间数据传递的实现

    SpringBoot 异步线程间数据传递的实现

    本文主要介绍了SpringBoot 异步线程间数据传递的实现,包括异步线程的基本概念、数据传递的方式、具体实现方式等,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 一文探索Java文件读写更高效方式

    一文探索Java文件读写更高效方式

    这篇文章主要介绍了一文探索Java文件读写更高效方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值需要的小伙伴可以参考一下
    2022-07-07
  • Java雪花算法生成分布式id详解

    Java雪花算法生成分布式id详解

    这篇文章主要介绍了Java雪花算法生成分布式id详解,随着业务的增长,有些表可能要占用很大的物理存储空间,为了解决该问题,后期使用数据库分片技术,将一个数据库进行拆分,通过数据库中间件连接,需要的朋友可以参考下
    2024-01-01
  • IDEA正则表达式全局搜索图文教程

    IDEA正则表达式全局搜索图文教程

    当您要搜索和替换特定的文本模式时,请使用正则表达式,下面这篇文章主要给大家介绍了关于IDEA正则表达式全局搜索的相关资料,文中通过代码以及图文介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Java多线程通信wait()和notify()代码实例

    Java多线程通信wait()和notify()代码实例

    这篇文章主要介绍了Java多线程通信wait()和notify()代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Springboot实现多线程注入bean的工具类操作

    Springboot实现多线程注入bean的工具类操作

    这篇文章主要介绍了Springboot实现多线程注入bean的工具类操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • java中下拉框select和单选按钮的回显操作

    java中下拉框select和单选按钮的回显操作

    这篇文章主要介绍了java中下拉框select和单选按钮的回显操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java+opencv3.2.0实现hough直线检测

    Java+opencv3.2.0实现hough直线检测

    这篇文章主要为大家详细介绍了Java+opencv3.2.0之hough直线检测,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论