使用java实现qq邮箱信息的发送(纯java实现)

需要的jar包准备:在这里插入图片描述
附上jar包下载链接:mail的jar包下载链接
activation的jar包下载

接下来在我们的浏览器中获取我们的email的邮箱授权码

登录网页上的qq邮箱,找到里面的设置下面的账户
在这里插入图片描述
在往下面找到我们的各个服务,如下:
在这里插入图片描述
获取授权码

接下来在idea中或者eclipse中创建普通项目就行,在导入我们先前所下载的jar包到lib目录下

接下来就代码实现了

都写在一个类中,代码有点繁琐。。

package zhenghuisheng;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

/**
 * qq邮箱授权码:ymihnzrtibgfebjd
 */

public class Email1 {
    
    
    //授权码
    private static String password = "ymihnzrtibgfebjd";
    //发送人的qq
    private static String myqq = null;
    //收件人的qq
    private static String userqq = null;
    //标题
    private static String title = null;
    //要输入的内容
    private static String textContext = null;
    
    public static void main (String[] args) throws Exception  {
    
    
        myqq = "12345674";
        userqq = "12345676";
        title = "蔡导晚上好";
        textContext = "没错,我就是蔡导,我是演员哈哈";
        //使用lamda表达式,
        // 可以消息轰炸,哈哈,有点狠
        new Thread(()->{
    
    
            for (int i = 0; i < 10; i++) {
    
    
                Date date = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");
                String datetime = sdf.format(date);
                try {
    
    
                    //调用方法测试
                    sendEmail(myqq,userqq,title,textContext,datetime);
                } catch (Exception e) {
    
    
                    e.printStackTrace();
                }
                finally {
    
    
                    try {
    
    
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
    
    
                        e.printStackTrace();
                    }
                }
            }
        }).start();

        System.out.println("发送成功!");
    }

    public static void sendEmail(String myqq, String userqq , String title, String textContext,String time) throws Exception{
    
    
        Properties properties = new Properties();
        //设置qq邮箱的服务器
        properties.setProperty("mail.host","smtp.qq.com");
        //邮件发送协议
        properties.setProperty("mail.transport.protocol","smtp");
        //验证用户名以及邮箱授权码
        properties.setProperty("mail.smtp.auth","true");

        //关于qq邮箱,还要设置SSL加密
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        properties.put("mail.smtp.ssl.enable","true");
        properties.put("mail.smtp.ssl.socketFactory",sf);

        //开始发送邮件
        //创建定义整个应用程序所需的环境信息的session

        Session session = Session.getDefaultInstance(properties, new Authenticator() {
    
    
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
    
    
                return new PasswordAuthentication( myqq + "@qq.com",password);
            }
        });
        //开启session,查看程序的运行状态
        session.setDebug(true);
        //通过session得到transport对象
        Transport ts = session.getTransport();

        //使用邮箱的用户名和授权码连上邮箱服务器
        ts.connect("smtp.qq.com",myqq + "@qq.com",password);
        //创建邮件
        MimeMessage mimeMessage = new MimeMessage(session);
        //指明邮件的发件人
        mimeMessage.setFrom(new InternetAddress(myqq + "@qq.com"));
        //指明邮件的收件人
        mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress( userqq + "@qq.com"));
        //邮件的标题
        mimeMessage.setSubject(title);
        //邮件的文本内容
        mimeMessage.setContent(textContext + time,"text/html;charset=utf-8");
        //发送邮件
        ts.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
        //关闭连接
        ts.close();
    }
}

在运行时在控制台就能看到消息发送的进度了!

可以先试着自己给自己发送

就能发现简单的代码就能实现这个qq的email的发送啦!

猜你喜欢

转载自blog.csdn.net/zhenghuishengq/article/details/108612832