java发送QQ邮件详细步骤
1、maven中添加如下依赖(不会maven则下载javax.mail的jar包)
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
2、前往QQ邮箱启用POP3功能
设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->开启POP3/SMTP服务
然后点生成授权码
3、java代码
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
public class QQMail {
private static final String FPAMail="freeprogramming@qq.com";//发件人邮箱
private static final String FPAMailPwd="xxxxxxxxxxxxx";//替换为你的授权码
private static final String NickName="自由编程协会";//显示的发件人昵称
private static Properties props;
private static Session mailSession;
private static MimeMessage message;
//初始化(建立持久化连接)
static{
Date start=new Date();
try {
// 创建Properties 类用于记录邮箱的一些属性
props = new Properties();
// 表示SMTP发送邮件,必须进行身份验证
props.put("mail.smtp.auth", "true");
//此处填写SMTP服务器
props.put("mail.smtp.host", "smtp.qq.com");
//端口号,QQ邮箱给出了两个端口,但是另一个我一直使用不了,所以就给出这一个587
props.put("mail.smtp.port", "587");
// 此处填写你的账号
props.put("mail.user",FPAMail );
// 此处的密码就是前面说的16位STMP口令
props.put("mail.password", FPAMailPwd);
// 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
// 使用环境属性和授权信息,创建邮件会话
mailSession = Session.getInstance(props, authenticator);// 创建邮件消息
message = new MimeMessage(mailSession);
// 设置发件人
InternetAddress form = new InternetAddress(
props.getProperty("mail.user"),NickName,"utf-8");
message.setFrom(form);
}catch (Exception e)
{
e.printStackTrace();
}
Date end=new Date();
System.out.println("初始化成功,耗时:"+((end.getTime()-start.getTime()))+"毫秒");
}
public static void sendQQMail(String title,String html_content,String receiver)
{
try {
// 设置收件人的邮箱
message.setRecipient(Message.RecipientType.TO,new InternetAddress(receiver));
// 设置邮件标题
message.setSubject(title);
// 设置邮件的内容体
message.setContent(html_content, "text/html;charset=UTF-8");
Date start=new Date();
// 发送邮件
Transport.send(message);
Date end=new Date();
System.out.println("成功发送,耗时"+((end.getTime()-start.getTime()))+"毫秒");
}catch (Exception e){
e.printStackTrace();
}
}
//测试代码
public static void main(String[] args) {
sendQQMail("邮箱测试","这是一封测试邮件!","xxxx@qq.com");//xxxx@qq.com为你要发送给谁就填谁的邮箱
} }
本文来自博客园,作者:HumorChen99,转载请注明原文链接:https://www.cnblogs.com/HumorChen/p/18039774
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~