Java实现邮件发送功能

245 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

准备工作,QQ邮箱开启授权

1.登录QQ邮箱,点击“设置” ----- “账号” 在这里插入图片描述 2.往下翻,看到**【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】**

点击右边开启按钮,开启成功后会生成一个116位授权码(记得复制,这个代码中会使用到) 在这里插入图片描述

java发送代码如下

1.maven依赖包

<!-- 支持发送邮件 -->
  <dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>1.5.2</version>
  </dependency>

2.代码

package controller;

import domain.MessageVo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Date;
import java.util.Properties;


import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class SendMailController {

    @RequestMapping("sendMail")
    @ResponseBody
    public void sendMail(String email) throws MessagingException {
        sendMailUtils(email);
    }
    public void sendMailUtils(String email) throws AddressException,MessagingException {

        // 创建Properties 类用于记录邮箱的一些属性
        Properties props = new Properties();
        // 表示SMTP发送邮件,必须进行身份验证
        props.put("mail.smtp.auth", "true");
        //此处填写SMTP服务器
        props.put("mail.smtp.host", "smtp.qq.com");
        //端口号,QQ邮箱端口587
        props.put("mail.smtp.port", "587");
        // 此处填写,写信人的账号
        props.put("mail.user", "**********@qq.com");
        // 此处填写16位STMP口令(刚才开启授权生成的16位的授权码)
        props.put("mail.password", "**********");

        // 构建授权信息,用于进行SMTP进行身份验证
        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);
        // 设置发件人
        InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
        message.setFrom(form);

        // 设置收件人的邮箱
        InternetAddress to = new InternetAddress("***********@qq.com");
        message.setRecipient(Message.RecipientType.TO, to);

        // 设置邮件标题
        message.setSubject("标题");

        // 设置邮件的内容体
        message.setContent("内容", "text/html;charset=UTF-8");

        // 发送邮件
        Transport.send(message);
    }

}