「这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战」
前言
今天突然心学来潮,想用Java来实现发邮件的功能,想想这个在实际中还是蛮有用的,比如我举几个例子哈:
-
常见的如在某网站注册了一个账户,自动发送一封激活邮件,通过邮件找回密码,自动批量发送活动信息等。
-
设置一个定时任务,然后需要定期反馈,如果可以适时的将状态发给自己的邮箱,是不是很令人期待哇。
今天我们就一起来实现这个功能~
前置条件
邮件服务器
邮件服务器是一种用来负责电子邮件收发管理的设备,类似于web服务器(如Tomcat)、数据库服务器(如MySql),把一台邮件服务器端软件放在网络上,即可供广大网络用户使用。
电子邮件协议
首先,什么是电子邮件协议呢?常用的电子邮件协议包括 SMTP,POP3,IMAP。其中邮件的创建和发送只需要用到 SMTP协议,SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
- SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
- POP3(收取邮件协议,默认端口110,不能在线操作)
- IMAP(收取邮件协议,默认端口143,运行在TCP/IP协议之上,与POP3的主要区别:可以在线操作)
JavaMail
JavaMail它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。写 JavaMail 程序就是编写邮件客户端程序(类似于 outlook、foxmail 等邮件客户端)。这也是本文重点要用到的东西,下面就来具体实现了。
实现
JavaMail 下载地址: github.com/javaee/java… SMTP, IMAP, 和 POP3 协议的实现的 jar 包
1.准备好一个发件邮箱和收件邮箱来测试(我是选择的163邮箱作为发件邮箱(需要设置SMTP),qq邮箱作为收件邮箱)
2.引入pom文件
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
3.java代码
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class Test {
private static final String USEREMAAL = "填你自己邮箱"; // 发件人称号,同邮箱地址
private static final String PASSWORD = "填写刚才获得的授权码"; // 可以使户端授权码
public static boolean sendMail(String to, String text, String title){
try {
final Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.qq.com");
props.put("mail.user", USEREMAAL);
props.put("mail.password", PASSWORD);
// 构建授权信息,用于进行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);
// 设置发件人
String username = props.getProperty("mail.user");
InternetAddress form = new InternetAddress(username);
message.setFrom(form);
// 设置收件人
InternetAddress toAddress = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO, toAddress);
// 设置邮件标题
message.setSubject(title);
// 设置邮件的内容体
message.setContent(text, "text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
public static void main(String[] args) throws Exception {
MailUtils.sendMail("xxx@qq.com","test","测试邮件");
System.out.println("===发送成功====");
}
}
参考
今天的文章用java实现发邮件功能分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/18548.html