干货建议收藏!!30行代码教你如何使用Java向全班同学发送邮件

Posted Jack·Kwok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货建议收藏!!30行代码教你如何使用Java向全班同学发送邮件相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

1. 写在前面

  • 现在请你想象一下下面这两个场景:

场景1:
你是一个大学部门的部员,你的部长给你一个任务:向所有通过面试的成员发送一个邮件,除了姓名和联系方式,内容都是一致的。
场景2:
你是一家企业的员工,你的老板让你给你们单位的所有员工发送一个邮件,内容是有关工资的情况,邮件上除了姓名和工资外,其余内容都是一致的。

不得不说,类似上面的场景非常常见!这个时候如果我们使用手动方式去发送,这也太Oh,You Tired(OUT)了吧!!是否可以用代码帮我们发送?答案是肯定的,现在就让JK来教大家如何使用Java向多群体发送多邮件!
在这里插入图片描述

2. 前期准备

2.1. 开通POP3/SMTP服务

因为我本人是习惯使用网易邮箱的,那么这里就以网易邮箱为例,其他邮箱大同小异。
首先,打开网页版的网易邮箱并登陆自己的邮箱。在这里插入图片描述
打开设置->POP3/SMTP/IMAP
在这里插入图片描述
开通POP3/SMTP服务,这里开启的时候会有一个小小的手机短信验证,相信这个对你来说就很简单的啦~
【重要!!!】确认开启并验证成功后该页面会生成一个授权码,该授权码要自己先保存着,后面要写到代码里面。
在这里插入图片描述

2.2. 项目构建

新建一个Maven项目,项目很简单,只有一个发送邮件的Java类和一个pom.xml文件。我们主要是通过这个SendEmail类的sendMail方法执行发送邮件的操作,该方法传入邮箱地址、邮箱内容等参数。
在这里插入图片描述
在pom.xml中添加依赖。

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

2.3. 重点代码讲解

2.3.1. 开启配置

创建一个Properties对象设置邮箱服务器配置信息。

Properties props = new Properties();

2.3.2. Session对象

创建一个Session对象。

Session session = Session.getDefaultInstance(props);

2.3.3. MimeMessage对象

创建MimeMessage对象存储发送邮件过程中的信息。

MimeMessage message = new MimeMessage(session);

3. 完整代码

你并没有看错,除了导包语句和注释,这个程序只有30行代码左右。这里的代码是针对一个邮箱发送一份邮件,但我想聪明的你应该知道如何去发挥吧~~

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;

/**
 * @ClassName SendEmail
 * @Description TODO
 * @Author jiaqi
 * @Date 2021/6/4 0:22
 * @Version 1.0
 **/
public class SendEmail {
    public static void main(String[] args) {
        // 自定义发件人的邮箱(此案例必须为网易邮箱)
        String from = "发件人邮箱地址";
        // 发件人称号,与发件人邮箱相同
        String user = "发件人邮箱地址";
        // 发件人邮箱客户端的授权码
        String password = "授权码";
        // 自定义收件人的邮箱
        String to = "收件人邮箱地址";
        // 发送邮箱标题
        String title = "我是标题哦!";
        // 发送邮箱文本
        String text = "你好,这里是邮件的内容";
        boolean bool = sendMail(from,user,password,to,title,text);
        System.out.println(bool);
    }
    /*
     * @Author Jiaqi
     * @Description //TODO 
     * @Date 0:46 2021/6/4
     * @Param [from, user, password, to, text, title]
     * @return boolean
     **/
    public static boolean sendMail(String from ,String user,String password, String to, String title,String text) {
        //开启配置
        Properties props = new Properties();
        // 设置服务器属性,这里是使用网易的smtp服务器
        props.setProperty("mail.smtp.host", "smtp.163.com");
        // 校验用户名和密码
        props.put("mail.smtp.host", "smtp.163.com");
        props.put("mail.smtp.auth", "true");
        // 使用刚刚定义个配置对象创建一个session对象
        Session session = Session.getDefaultInstance(props);
        // 在控制台显示显示发送过程信息
        session.setDebug(true);
        // 创建message对象存储信息
        MimeMessage message = new MimeMessage(session);
        try {
            //存储发件人邮箱
            message.setFrom(new InternetAddress(from));
            // 存储收件人邮箱
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            // 存储标题
            message.setSubject(title);
            // 内容(包括文本和附件)
            Multipart multipart = new MimeMultipart();
            // 文本
            BodyPart contentPart = new MimeBodyPart(); 
            //设置文本内容和编码
            contentPart.setContent(text, "text/html;charset=utf-8");
            //像内容中添加文本信息
            multipart.addBodyPart(contentPart);
            //存储文本
            message.setContent(multipart);
            // 保存
            message.saveChanges();
            // 连接服务器的邮箱
            Transport transport = session.getTransport("smtp");
            transport.connect("smtp.163.com", user, password);
            // 发送邮件
            transport.sendMessage(message, message.getAllRecipients());
            // 关闭资源
            transport.close();
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }
}

提供改进思路:

  1. 你可以设置多份邮件内容,然后向一个邮箱发送多份不同邮件。
  2. 你可以设置多个不同邮箱,然后向不同邮箱发送同一份邮件内容。
  3. 你可以设置多个不同邮箱,然后设置一份邮件内容,但设置每个邮箱匹配不同的姓名、电话等信息,有数据库基础的小伙伴还可以结合数据库的信息实现。
  4. 你可以设置多个不同的内容和多个不同的邮箱,然后实现定期发送。

4. 总结

使用邮箱向批量用户发送邮件,这是一个非常常见的业务。我们的邮箱中充斥着各大平台的“群发消息”,这也可以说明这个小小的功能有多大的用处。好啦,这一次分享就到这里啦,感谢您看了这么久。现在是凌晨1.56分,原创不易。如果觉得这篇文章对你有帮助的话,欢迎大家点赞评论收藏,这也是对我最大的鼓励啦!
在这里插入图片描述

以上是关于干货建议收藏!!30行代码教你如何使用Java向全班同学发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

30分钟掌握沧湖一体化:flink+hudi(干货,建议收藏)

一文带你彻底搞懂Java和JavaScript的区别与相似之处(纯干货建议收藏)

一文带你彻底搞懂Java和JavaScript的区别与相似之处(纯干货建议收藏)

30分钟掌握沧湖一体化:flink+hudi(干货,建议收藏)

半小时体验云原生:手把手教你在k8s上部署springboot应用——干货分享,建议收藏

半小时体验云原生:手把手教你在k8s上部署springboot应用——干货分享,建议收藏