使用JavaMail实现邮件发送

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cx243698/article/details/80579108

介绍

邮件的发送是我们在开发项目时经常使用到的,比如用来做验证、推送消息等等。而邮件的发送也是遵循特定的协议的。常用的电子邮件协议包括 SMTP,POP3,IMAP

SMTP

SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。

过程

  • 建立TCP连接
  • 客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令,服务器端正希望以OK作为响应,表明准备接收
  • 客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行,服务器端则表示是否愿意为收件人接收邮件
  • 协商结束,发送邮件,用命令DATA发送
  • 以.表示结束输入内容一起发送出去
  • 结束此次发送,用QUIT命令退出

实现

首先我们使用网易邮箱,其他邮箱也可以,在设置中开启SMTP服务。

Maven依赖

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

代码

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

public class JavaMailTest {
    public static void main(String[] args) throws MessagingException {
        // 配置发送邮件的环境属性
        final Properties props = new Properties();
        // 表示SMTP发送邮件,需要进行身份验证
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", "smtp.163.com");
        // 发件人的账号
        props.put("mail.user", "[email protected]");
        // 访问SMTP服务时需要提供的密码
        props.put("mail.password", "XXXXXXXX");
        // 构建授权信息,用于进行SMTP进行身份验证
        Authenticator authenticator = new Authenticator() {
            @Override
            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("[email protected]");
        message.setRecipient(RecipientType.TO, to);
        // 设置邮件标题
        message.setSubject("inchlifc");
        // 设置邮件的内容体
        message.setContent("Hello 小小渔夫", "text/html;charset=UTF-8");
        // 发送邮件
        Transport.send(message);
    }
}

测试

猜你喜欢

转载自blog.csdn.net/cx243698/article/details/80579108
今日推荐