10分钟

任务 3 java.mail方式发送邮件

任务目标

使用 java 方式编写 java.mail 发送邮件相关程序,实现在 java 端编写和发送邮件的功能。

任务步骤

1.配置 java 开发环境

配置 java 开发环境可参考腾讯云社区文章《java 环境之 JDK 配置》。

https://cloud.tencent.com/developer/article/1510025

可使用 COS 网址中的安装包安装 JDK 应用程序。

https://course-public-resources-1252758970.cos.ap-chengdu.myqcloud.com/%E5%AE%9E%E6%88%98%E8%AF%BE/%E4%BD%BF%E7%94%A8SMTP%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6/jdk-8u131-windows-x86.exe

验证 java 开发环境是否配置成功,可点击 Windows 键+R,输入“cmd”打开 cmd 端,输入命令:

java -version
查看Java版本

点击回车键,查看到 java 版本,即配置 java 开发环境成功。

配置java开发环境成功

2.安装 java 开发编辑工具 IntelliJ IDEA

可通过在 IntelliJ IDEA 官网上等方式下载 IntelliJ IDEA 编辑工具。

IntelliJ IDEA 官网网址:https://www.jetbrains.com/idea/

双击打开 IntelliJ IDEA,出现以下页面,即安装完成。

安装完成

3.创建java项目

安装完成后打开,出现下面的页面,此时选择【Create New Project】选项,创建一个新项目。

创建新项目

在左侧导航栏中选择【Maven】,并设置 SDK,即选择 JDK 路径。

配置项目信息

设置项目名称和项目在本地的地址,然后点击【Finish】。

配置项目信息

打开页面,在页面右下角弹出引入依赖包的选项,选择【Enable Auto-Import】。

打开自动导入选项

在 java 文件夹下创建 email 包和 sendEmail 类。

创建包和类

点击打开【pom.xml】文件,加入依赖 javax.mail,代码如下:

<dependencies>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.5.5</version>
    </dependency>
</dependencies>
导入依赖包

打开 sendEmail 类,复制粘贴加入代码,完成实现 java.mail 发送邮件的逻辑程序。代码如下:

private static boolean send_qqmail(String strMail, String strTitle, String strText){

    boolean bret = false;

    try {
        final Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.qq.com");
        //你自己的邮箱
        props.put("mail.user", "XXXXXXXX@qq.com");
        //你开启pop3/smtp时的验证码
        props.put("mail.password", "XXXXXXXXXXXX");
        props.put("mail.smtp.port", "25");
        props.put("mail.smtp.starttls.enable", "true");

        Authenticator authenticator = new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                String userName = props.getProperty("mail.user");
                String password = props.getProperty("mail.password");
                return new PasswordAuthentication(userName, password);
            }
        };

        // 使用环境属性和授权信息,创建邮件会话
        Session mailSession = Session.getInstance(props, authenticator);
        // 创建邮件消息
        MimeMessage message = new MimeMessage(mailSession);
        // 设置发件人
        String username = props.getProperty("mail.user");
        InternetAddress form = new InternetAddress(username);
        message.setFrom(form);
        InternetAddress to = new InternetAddress(strMail);
        message.setRecipient(Message.RecipientType.TO, to);
        // 设置邮件标题
        message.setSubject(strTitle);
        // 设置邮件的内容体
        message.setContent(strText, "text/html;charset=UTF-8");
        // 发送邮件
        Transport.send(message);
        bret = true;
    }

    catch (AddressException e) {
        e.printStackTrace();
    }
    catch (MessagingException e) {
        e.printStackTrace();
    }
    catch (Exception e){
        e.printStackTrace();
    }
    return bret;
}

public static void main(String[] args) {
    //“strMail”填写要发送的邮箱,“strTitle”填写邮件主题,“strText”填写邮件内容
    if (send_qqmail("XXXXXXXX@qq.com", "测试QQ邮箱发送", "<body><p>你好吗</p></body>"))
        System.out.println("QQ邮件发送成功");

}

复制粘贴后自动引入依赖包,页面如下:

加入代码后的页面

注意:

  • “XXXXXXXX@qq.com”填写自己的邮箱,也就是开启 pop3/smtp 服务的邮箱
//你自己的邮箱
props.put("mail.user", "XXXXXXXX@qq.com");
  • “XXXXXXXXXXXX”填写任务 2 中保存的 pop3/smtp 的验证码
//你开启 POP3/SMTP 时的验证码
props.put("mail.password", "XXXXXXXXXXXX");
  • “XXXXXXXX@qq.com”填写要发送的目标邮箱;“<body><p>你好吗</p></body>”填写邮件内容
//“strMail”填写要发送的邮箱,“strTitle”填写邮件主题,“strText”填写邮件内容
if (send_qqmail("XXXXXXXX@qq.com", "测试QQ邮箱发送", "<body><p>你好吗</p></body>"))

点击运行。

点击运行

在控制台查看到输出“QQ 邮件发送成功”的字样,表示邮件发送成功。

控制台输出字样

4.实验验证

登录目标邮箱或联系目标邮箱持有者,查看是否收到已发送的邮件。

查看是否收到邮件

已收到邮件,邮件发送成功。