JavaMail发送QQ邮件邮件

荐读

JavaMail邮件发送不成功的那些坑人情况及分析说明
javax.mail.AuthenticationFailedException异常的处理
QQ邮箱如何开启POP3/SMTP服务

发送说明

在idea中要配置好JavaEE,不然就没法玩耍,我用的是JavaEE6,自动下载的。
不然就是爆java.lang.NoClassDefFounfError: javax/activation/DataSource

其他几个包也要导进去:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不装好JavaEE,或者只装好JavaEE没导入单独的包,就会报错。
在这里插入图片描述

使用QQ邮箱会可能出现:javax.mail.AuthenticationFailedException 这个异常,请查阅上面的荐读文章来了解这个问题,与QQ邮箱本身有关。

一定要注意下面的代码中第26行的“开通pop3/smtp服务时的验证码”是怎么来的,不要以为是自己的Email-Password呀!

在这里插入图片描述

完整代码

import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class EMailSender {
    public static void main(String[] args) throws Exception {
        // 创建邮件的发送过程中用到的主机和端口号的属性文件
        Properties properties = new Properties();
        // 设置邮件发送方的主机地址,qq邮箱为smtp.qq.com
        properties.put("mail.smtp.host", "smtp.qq.com");
        // 设置发送邮件端口号
        properties.put("mail.smtp.port", "25");
        // 设置邮件发送需要认证
        properties.put("mail.smtp.auth", "true");
        // 创建邮件验证信息,即发送邮件的用户名和密码
        Authenticator authenticator = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 重写验证方法,填写用户名,密码
                return new PasswordAuthentication("sender_email_address", "开通pop3/smtp服务时的验证码");
            }
        };
        // 根据邮件会话 构建一个邮件的session
        Session sendMailSession = Session.getDefaultInstance(properties, authenticator);
        // 创建一个邮件消息
        Message message = new MimeMessage(sendMailSession);
        // 创建邮件发送者地址
        Address senderAddress = new InternetAddress("sender_email_address");
        // 将原地址设置到消息的信息中
        message.setFrom(senderAddress);
        // 创建邮件的接收者地址
        Address receiverAddress = new InternetAddress("receiver_email_address");
        // 将接收者的地址设置到消息的信息中
        message.setRecipient(Message.RecipientType.TO, receiverAddress);
        // 设置邮件的主题
        message.setSubject("日常聊天");
        // 设置邮件的发送内容
        message.setText("Hello, BlankSpace");
        Transport.send(message);
    }
}
发布了645 篇原创文章 · 获赞 1334 · 访问量 57万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104642821