Java 使用 JavaMailSenderImpl 实现发送 QQ 邮件

321 阅读1分钟

这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

了解邮件服务器,传输协议

邮件服务器与传输协议: 要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中。

SMTP服务器地址: 一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com,这里用的是 qq 的邮箱。

SMTP协议: 通常处理用户邮件发送请求的服务器称之为SMTP服务器(邮件发送服务器)。

POP3协议: 通常把处理用户邮件接收请求的服务器称之为POP3服务器(邮件接收服务器)。

发送QQ邮箱实现

QQ 邮箱开启 POP3/SMTP 服务,获取 QQ 邮箱授权码

image-20210721183022698

导入相关 jar 包依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>5.3.8</version>
</dependency>
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

发送邮件工具类,只能发送简单文本邮件

package utils;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;

import java.util.Properties;

public class EmailUtils {

    private static final JavaMailSenderImpl sender = new JavaMailSenderImpl();

    static {

        //服务器
        sender.setHost("smtp.qq.com");
        //协议
        sender.setProtocol("smtps");
        //端口号
        sender.setPort(465);
        //邮箱账号
        sender.setUsername("*********@qq.com");
        //邮箱授权码
        sender.setPassword("************");
        //编码
        sender.setDefaultEncoding("Utf-8");
        Properties p = new Properties();
        p.setProperty("mail.smtp.ssl.enable", "true");
        sender.setJavaMailProperties(p);
    }

    /**
     * 发送邮件
     *
     * @param subject
     * @param text
     * @return
     */
    public static boolean sendEmail(String subject, String text) {
        try {
            SimpleMailMessage message = new SimpleMailMessage();
            //设置邮件标题
            message.setSubject(subject);
            //设置邮件正文
            message.setText(text);
            //设置邮件发送人
            message.setFrom("************");
            //设置邮件接收人
            message.setTo("************");
            //发送邮件
            sender.send(message);
            return true;
        } catch (Exception e) {
            return false;
        }
    }


}

测试类

import org.junit.Test;
import utils.EmailUtils;

public class MailTest {

    @Test
    public void send() {
        EmailUtils.sendEmail("test", "test");
    }
}

发送成功

image-20210721184410493