Java实现QQ邮件群发功能

Java实现QQ邮件群发功能,第1张

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服务密码在哪儿?

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存