邮箱smtp发送功能一般用于重置密码,异地登录,验证用户信息等,所以大部分邮箱的smtp发送功能缺省是关闭的,使用此功能时,需要开通该功能,不同邮箱,不同方法
传统的发送邮件,是用户登录后输入需要发送邮件的地址,输入主体和内容等,进行发送,由于用户已经登录,所以不需要验证
使用smtp发送邮件,不需要用户密码,使用的是授权码(不同邮箱可能说法不一,本质是一样的)
使用前,记得导入包
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
...
<dependencies>
// 服务器地址:
String smtp = "smtp.qq.com";//这里是QQ邮箱服务器地址
// 登录用户名:
String username = "example@qq.com";
// 登录口令:
String password = "口令";//注意,这不是密码,开通smtp功能后,记得拿到这个口令,叫法不一,企鹅邮箱叫授权码
// 连接到SMTP服务器587端口:
Properties props = new Properties();
// SMTP主机名
props.put("mail.smtp.host", smtp);
// 主机端口号
props.put("mail.smtp.port", "587");
// 是否需要用户认证
props.put("mail.smtp.auth", "true");
// 启用TLS加密
props.put("mail.smtp.starttls.enable", "true");
// 获取Session实例:
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
// 设置debug模式便于调试:
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
// 设置发送方地址:
message.setFrom(new InternetAddress("example@qq.com"));//一般为登录用户邮箱
// 设置接收方地址:
message.setRecipient(Message.RecipientType.TO, new InternetAddress("任意邮箱"));//需要发送的邮箱地址,注意,某些邮箱发送给Gmail等国外邮箱,可能发送不过去
// 设置邮件主题:
message.setSubject("这是邮件的主体", "UTF-8");
// 设置邮件正文:
message.setText("这是邮件的正文", "UTF-8");
// 发送:
Transport.send(message);