Java 发送QQ邮件

1. 开启SMTP服务

1.1 在QQ邮箱的 设置->账户 里开启 SMTP 服务

1.2 QQ邮箱不能直接用QQ密码,而是使用 授权码 ,点击 生成授权码

2. 编写代码

2.1 添加依赖的jar包
maven中在直接添加

<dependency>
   <groupId>com.sun.mail</groupId>
   <artifactId>javax.mail</artifactId>
   <version>1.5.1</version>
</dependency>

或去官方下载地址 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.7-oth-JPR。
解压完之后,通常我们只需要其中的mail.jar,把它加到我们 java 工程的依赖包中。
2.2 添加代码

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.moxiang.arch.log.Log;
import com.sun.mail.util.MailSSLSocketFactory;

public class SendQQMail {

     /**
     * 发送邮件
     * @param title 邮件标题
     * @param text 邮件内容
     * @param to  接收人邮箱地址
     * @param from 发件人邮箱地址
     * @param pwd 授权码
     * @return
     */
    public static void Send(String title, String text, String to, String from, String pwd){
        Properties props = new Properties();

        // 开启debug调试
        props.setProperty("mail.debug", "true");
        // 发送服务器需要身份验证
        props.setProperty("mail.smtp.auth", "true");
        // 设置邮件服务器主机名
        props.setProperty("mail.host", "smtp.qq.com");
        // 发送邮件协议名称
        props.setProperty("mail.transport.protocol", "smtp");

        try {
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            props.put("mail.smtp.ssl.enable", "true");
            props.put("mail.smtp.ssl.socketFactory", sf);

            Session session = Session.getInstance(props);

            Message msg = new MimeMessage(session);
            msg.setSubject(title);
            StringBuilder builder = new StringBuilder();
            builder.append(text);
            msg.setText(builder.toString());
            msg.setFrom(new InternetAddress(from));

            Transport transport = session.getTransport();
            transport.connect("smtp.qq.com", from, pwd);

            transport.sendMessage(msg, new Address[] { new InternetAddress(to) });
            transport.close();
        }catch (Exception e) {
            Log.error(e);
        }
    }
}

2.3 测试
编写测试代码

SendQQMail.SendEmail("QQMail 测试","这是 Java 发送 QQMail 测试代码!", "接收邮箱","发送的QQ邮箱","发送邮箱对应授权码");

1581755694497

0%