栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现QQ邮件群发功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现QQ邮件群发功能

在生活中,我们在编写 java 代码时,一般都会 try...catch 包裹住可能会出现异常的代码块。但如果在一个java项目过大,同时又出现了bug时,这很不利于我们来查错。

所以我们就可以使用邮件,可以自己写一个邮件工具类,使用 try...catch 处理时,就可以使用邮件类每次发现问题时,向指定的邮箱发送一封邮件。

邮件工具类除了以上的用法,我们也可以自己写个QQ邮件群发。

首先是需要把邮件工具类给写出来:

这里使用IDEA,首先创建一个 Maven 项目:

然后,就会出现一个工程目录。找到 pom.xml 这个文件,打开它,并在其中添加一段代码:



    4.0.0

    org.example
    e-mailSystem
    1.0-SNAPSHOT

    
        8
        8
    


    
        
            org.apache.commons
            commons-email
            1.5
        
    

当代码添加完成之后,就可以编写自己的邮件发送工具类了。

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class SendMailTools {
    
    public static boolean sendMail(String toUser, String fromUser,
                                   String fromUserPassWord, String theme, 
                                   String content){
        //实例化邮件资源
        SimpleEmail email = new SimpleEmail();
        //设置qq邮件服务器的端口号
        email.setSslSmtpPort("465");
        //使用QQ邮箱的固定写法
        email.setHostName("smtp.qq.com");
        //设置发件人的账户和POP3/SMTP服务密码
        email.setAuthentication(fromUser, fromUserPassWord);
        //编码方式
        email.setCharset("UTF-8");
        try {
            //收件人
            email.addTo(toUser);
            //发件人
            email.setFrom(fromUser);
            //邮件主题
            email.setSubject(theme);
            //邮件内容
            email.setMsg(content);
            //发送
            email.send();
            return true;
        } catch (EmailException e) {
            e.printStackTrace();
            return false;
        }
    }
}

最后就是测试使用我们这个邮件工具类了。

import java.io.BufferedReader;
import java.io.FileReader;

public class Test {
    public static void main(String[] args) {
        String toFrom = "xxxxxxxxxx@qq.com";         //发件人
        String toFromPassWord = "xxxxxxxxxxxxxxxx";  //发件人邮箱POP3/SMTP服务密码
        String theme = "这是一封测试邮件";             //邮件主题
        String content = "hello word!~~~";           //邮件具体内容
        try(
             FileReader fs = new FileReader("toUser.txt");//字符流,默认当前项目下的文本文件
             BufferedReader br = new BufferedReader(fs);  //字符装饰流
                ){
            String ret = null;
            //循环读取,每次读一行
            while((ret = br.readLine())!=null){
                //发送成功提示一下
                if(SendMailTools.sendMail(ret,toFrom,toFromPassWord,theme,content)){
                    System.out.println("发送成功》》》");
                }else{
                    System.out.println("失败!!!");
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

这里我使用的是从一个 txt 文本文件中读取收件人的邮箱,然后发送。发件人则是固定的。大家在写这个代码时,有兴趣的可以将发件人也使用文件的方式读取,更可以将主题和内容也使用文件读取后发送。

 程序运行结果:

 注意:由于我们这里使用的是QQ邮箱的服务区,所以在同一时间这里可能发送成功了,但是收件人有的可能会收不到,而想要避免这个Bug,两个方法:

1.在同一时间内发送邮件的数量尽量减少

2.使用自己的服务器或者是第三方的服务器

最后说一下邮箱POP3/SMTP服务密码在哪儿?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696933.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号