首先我们需要了解一下邮件发送(SMTP)和邮件接收(POP3)的协议:
SMTP(Simple MailTransfer Protocol)即简单邮件传输协议, 它是一组用于由源地址到目的地址传送邮件的规则,由它来控制邮件的中转方式。 SMTP协议属于TCP/IP协议簇,它帮组每台计算机在发送或中转信件时找到下一个目的地。 SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
POP3(Post Office Protocol -Version3)本协议主要用于主持客户端远程管理在服务器上的电子邮件。
邮件的发送接收过程
图片.png我们这里使用网易邮箱为例
1.开通SMTP协议
图片.png 图片.png这一步的主要目的是开通SMTP协议和获取客户端授权码(授权码需要自己设置类似于自己的邮箱密码)
二,代码实现
1.引入依赖
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.0</version>
</dependency>
2.代码编写
/**
* 邮件
* author:CoderZS
*/
public class javaMailTest {
private static final String HOST = "smtp.163.com"; // 发送邮件邮箱的配置
private static final Integer PORT = 25;
private static final String USERNAME = "zs520it@163.com";//163邮箱账号
private static final String PASSWORD = "000000";//163邮箱---授权码
private static final String EMAILFORM = "zs520it@163.com"; //发送邮件的用户
private static JavaMailSenderImpl mailSender = createMailSender();
private static final String EMAILNAME = "数据异常报告"; //收到邮件显示对方邮件名称 总体名称
private static final String EMAILTOPNAME = "定时任务1数据采集异常"; //邮件名称
/**
* 邮件发送器
*
* @return 配置好的工具
*/
private static JavaMailSenderImpl createMailSender() {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(HOST);
sender.setPort(PORT);
sender.setUsername(USERNAME);
sender.setPassword(PASSWORD);
sender.setDefaultEncoding("Utf-8");
Properties p = new Properties();
p.setProperty("mail.smtp.timeout", "25000");
p.setProperty("mail.smtp.auth", "false");
sender.setJavaMailProperties(p);
return sender;
}
/**
* 发送邮件
* @param to 邮件接收人
* @param subject 主题
* @param html 发送内容
* @throws UnsupportedEncodingException 异常
*/
public static void sendHtmlMail(String to, String subject, String html) {
try {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 设置utf-8或GBK编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");
messageHelper.setFrom(EMAILFORM, EMAILNAME);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(html, true);
mailSender.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
sendHtmlMail("769671508@qq.com", EMAILTOPNAME, "数据入库异常! CoderZS 我在简书等你");
}
}
邮件通知
邮件通知
网友评论