介绍:本文maven项目通过java代码实现邮件的发送,发送服务器为QQ邮箱服务器,即通过QQ邮箱实现邮件的发送
首先需要开启QQ服务并获取授权码
授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码
适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
QQ邮箱Web界面上方——设置——账户——找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
选择开启,开启后在下方点击获取授权码,在下面发送信息的时候需要设置该授权码
1.添加依赖的jar
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
2.代码实现
package com.shulie;
import org.junit.Test;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class JavaEmail {
@Test
public void testMail() throws Exception{
Properties props = new Properties();
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.host","smtp.qq.com");//邮件发送服务器地址
//在实际操作中遇到一个问题 报错need ehlo and auth first! 这是可以把下面的代码修改为props.put("mail.smtp.auth","true")试试
props.put("mail.smtp.auth",true);//是否验证用户身份
Session session = Session.getInstance(props);//得到Session;
session.setDebug(true);//使用debug模式,在控制台输出smtp协议应答过程
//创建一个MimeMessage格式的邮件
MimeMessage message = new MimeMessage(session);
//设置发送者 发送者的邮箱地址
Address fromAddress = new InternetAddress("XXXXXXX@qq.com");//邮箱地址
message.setFrom(fromAddress);//设置发件地址
//设置接收者 163邮箱 qq邮箱 阿里云邮箱均可。。。
Address toAddress = new InternetAddress("*********");//收件人邮箱地址
//下面该message.setRecipient(Message.RecipientType.TO, toAddress) 其中第二个参数可以设置一个InternetAddress数组,实现发送给多个用户
message.setRecipient(Message.RecipientType.TO, toAddress);//设置收件地址
//设置邮件主题
message.setSubject("来自上海");
//设置邮件内容
message.setText("大帅,你好");
//保存邮件
message.saveChanges();
// 得到发送邮件的通道
Transport transport = session.getTransport("smtp");
// 通道连接服务器 第二个参数为 发送者的邮箱 第三个参数为该邮箱的16位授权码
transport.connect("smtp.qq.com","XXXXXXXX@qq.com","*****************");
// 发送
transport.sendMessage(message, message.getAllRecipients());
// 关闭通道
transport.close();
}
}
参考博客:https://blog.csdn.net/miaoch/article/details/53172743
参考博客:https://blog.csdn.net/zimou5581/article/details/70227860