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

简介: 使用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的发送啦!

相关文章
|
2月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
39 8
|
2月前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
51 3
|
2月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
84 2
|
3月前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
219 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
4月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
41 1
|
4月前
|
域名解析 分布式计算 网络协议
java遍历hdfs路径信息,报错EOFException
java遍历hdfs路径信息,报错EOFException
44 3
|
4月前
|
Java 编译器 测试技术
|
5月前
|
前端开发 Java
Java高手都在用的秘籍:自定义异常,让错误信息说话!
Java高手都在用的秘籍:自定义异常,让错误信息说话!
227 1
|
5月前
|
Java Windows
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
【Azure Developer】Windows中通过pslist命令查看到Java进程和线程信息,但为什么和代码中打印出来的进程号不一致呢?
|
5月前
|
数据采集 机器学习/深度学习 前端开发
Java爬虫中的数据清洗:去除无效信息的技巧
Java爬虫中的数据清洗:去除无效信息的技巧