目录
大家都知道 有udp协议 tcp协议 SMTP协议 就是邮件协议
POP3与SMTP是什么
邮件发送过程详细分析
邮箱发送原理
主要使用到的类:
Properties类:作用是创建Session对象,需要封装邮件传输使用的协议(mail.transport.protocol =
Session类:
MimeMessage(Message子类):
InternetAddress(Address子类):
编写代码思路
2、准备好mail配饰文件,mail.proerties
3、编写代码
总结:
qq邮箱发送验证码 前期准备:
需要开启qq邮箱的pop3/smtp功能
第一步:登录qq邮箱打开设置
切换到账户选项
这个SMTP这里需要开启----开启之后会需要你验证信息
这个意思就是你需要开启SMTP协议
大家都知道 有udp协议 tcp协议 SMTP协议 就是邮件协议
POP3与SMTP是什么 POP3:(Post Offiffiffice Protocol 3),邮局协议的第三版本,规定了用户从个人计算机连接到Internet 的邮件服务器和下载电子邮件的协议。特点是接收邮件的协议。 SMTP:(Simple Mail Transfer Protocol),简单邮件传输协议。它是一组用于从源地址到目的地址传 输邮件的规范,通过它来控制邮件的中转方式,帮助每台计算机在发送或中转信件时找到下一个目的 地。特点是发送邮件的协议。
邮件发送过程详细分析
邮箱发送原理
主要使用到的类:
Properties类:作用是创建Session对象,需要封装邮件传输使用的协议(mail.transport.protocol =
smtp),
发件人的
SMTP
服务器地址
(mail.smtp.host = smtp.qq.com ),
传输的请求认证(
mail.smtp.auth
= true )
Session类:
创建:通过
Session
类的静态方法
public static Session getDefaultInstance(java.util.Properties
props)
(还有其他的几个方法,想了解查看
JavaEE
的
API
文档即可)
获取
Transport
对象:
public Transport getTransport()
利用
Session
对象创建邮件对象:
public MimeMessage(Session session)
(
MimeMessage
的构造
器)
public void setDebug(boolean debug)
查看
debug
信息
MimeMessage(Message子类):
创建:上面已说,利用
Session
对象创建
设置发件人:
public void setFrom(Address address)
设置收件人:
public void setRecipient(Message.RecipientType type, Address address)
设置邮件主题:
public void setSubject(String subject, String charset)
设置邮件正文:
public void setContent(Object o, String type)
设置发送时间:
public void setSentDate(java.util.Date d)
设置保存:
public void saveChanges()
(当然
API
里面还封装了邮件的正文容器,但本文章不详细说明了。)
InternetAddress(Address子类):
public InternetAddress(String address)
创建对象
public InternetAddress(String address, String personal, String charset)
创建对象
Session类:
创建:通过
Session
类的静态方法
public static Session getDefaultInstance(java.util.Properties
props)
(还有其他的几个方法,想了解查看
JavaEE
的
API
文档即可)
获取
Transport
对象:
public Transport getTransport()
利用
Session
对象创建邮件对象:
public MimeMessage(Session session)
(
MimeMessage
的构造
器)
public void setDebug(boolean debug)
查看
debug
信息
MimeMessage(Message子类):
创建:上面已说,利用
Session
对象创建
设置发件人:
public void setFrom(Address address)
设置收件人:
public void setRecipient(Message.RecipientType type, Address address)
设置邮件主题:
public void setSubject(String subject, String charset)
设置邮件正文:
public void setContent(Object o, String type)
设置发送时间:
public void setSentDate(java.util.Date d)
设置保存:
public void saveChanges()
(当然
API
里面还封装了邮件的正文容器,但本文章不详细说明了。)
InternetAddress(Address子类):
public InternetAddress(String address)
创建对象
public InternetAddress(String address, String personal, String charset)
创建对象
InternetAddress(Address子类): public InternetAddress(String address) 创建对象 public InternetAddress(String address, String personal, String charset) 创建对象
接下来就是代码,大家认真看下-需要源码可以dd我的后台
编写代码思路
public class SendEmailUtil {
public static void main(String[] args) {
send("1293158456@qq.com","12111");
}
public static void send(String to,String code){
try {
Properties props=new Properties();
//设置邮箱的参数
//1、设置主机
// props.setProperty("mail.host","smtp.163.com");
props.setProperty("mail.smtp.host","smtp.qq.com");
// props.setProperty("mail.host","smtp.163.com");
//2、设置验证
props.setProperty("mail.smtp.auth","true");
//3、邮箱协议
props.setProperty("mail.transport.protocol","smtp");
Authenticator authenticator=new Authenticator() {
//实现验证的方法
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//不是邮箱的账号和密码 【邮箱服务器的或者授权码】
return new PasswordAuthentication("************@qq.com","授权
码");
}
};
Session session = Session.getInstance(props, authenticator);
//设置debug
session.setDebug(true);
//创建邮件
MimeMessage message=new MimeMessage(session);
//设置发送人
message.setFrom(new InternetAddress("********@qq.com"));
//设置接收人 to表示发送 Cc 表示抄送 bcc 表示暗送
message.setRecipients(MimeMessage.RecipientType.TO,to);
message.setRecipients(MimeMessage.RecipientType.CC,to);
//message.setRecipients(RecipientType.BCC,"2078596261@qq.com");
//设置邮件的主题
message.setSubject("来自XX网站的激活邮件");
//设置正文内容
message.setContent("恭喜XX成为网站会员请点击链
接进行激活","text/html;charset=UTF-8");//发送
Transport.send(message);
System.out.println("邮件发送成功!");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
2、准备好mail配饰文件,mail.proerties
mail.smtp.host=smtp.qq.com
#
设置传输协议
mail.transport.protocol=smtp
#
设置传输请求认知
mail.smtp.auth=true
3、编写代码
1、使用静态代码块加载配置文件properties文件
2、通过加载到的properties配置文件获取到session对象。
3、通过session创建邮件对象
4、设置邮件对象的信息
设置发件人
设置收件人
设置邮件主题
设置邮件内容
设置发送时间
并且保存以上所有更改
5、创建Transport对象
6、取连接到邮件服务器
transport.connect("********@qq.com" , "授权码");
7、发送消息
8、关闭连接
public class TestMail {
// 创建properties对象
static Properties pro=new Properties();
// 通过静态代码块加载配置文件
static {
InputStream inputStream =
TestMail.class.getClassLoader().getResourceAsStream("mail.properties");
// Properties pro=new Properties();
try {
pro.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}public static void main(String[] args) {
sendMail("验证码","商城验证码","525393623@qq.com");
}
// 编写方法发送邮件
public static boolean sendMail(String subject,String content,String to){
//通过配置文件获取Session对象
Session session = Session.getDefaultInstance(pro);
// 设置日志输出
session.setDebug(true);
//创建邮件对象
MimeMessage message = new MimeMessage(session);
try {
//设置发件人
message.setFrom(new InternetAddress("1293158456@qq.com"));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new
InternetAddress(to));
//设置邮件主题
message.setSubject(subject);
//设置内容
message.setContent(content, "text/html;charset=UTF-8");
//设置发送时间
message.setSentDate(new Date());
//保存改变
message.saveChanges();
//创建Transport对象
Transport transport = session.getTransport();
//获取连接到邮件服务器
transport.connect("发件人邮箱@qq.com" , "******授权码******");
//发送信息
transport.sendMessage(message, message.getAllRecipients());
//关闭连接
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
}
return true;
}
1、使用静态代码块加载配置文件properties文件
2、通过加载到的properties配置文件获取到session对象。
3、通过session创建邮件对象
4、设置邮件对象的信息
设置发件人
设置收件人
设置邮件主题
设置邮件内容
设置发送时间
并且保存以上所有更改
5、创建Transport对象
6、取连接到邮件服务器
transport.connect("********@qq.com" , "授权码");
7、发送消息
8、关闭连接
public class TestMail {
// 创建properties对象
static Properties pro=new Properties();
// 通过静态代码块加载配置文件
static {
InputStream inputStream =
TestMail.class.getClassLoader().getResourceAsStream("mail.properties");
// Properties pro=new Properties();
try {
pro.load(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}public static void main(String[] args) {
sendMail("验证码","商城验证码","525393623@qq.com");
}
// 编写方法发送邮件
public static boolean sendMail(String subject,String content,String to){
//通过配置文件获取Session对象
Session session = Session.getDefaultInstance(pro);
// 设置日志输出
session.setDebug(true);
//创建邮件对象
MimeMessage message = new MimeMessage(session);
try {
//设置发件人
message.setFrom(new InternetAddress("1293158456@qq.com"));
//设置收件人
message.setRecipient(Message.RecipientType.TO, new
InternetAddress(to));
//设置邮件主题
message.setSubject(subject);
//设置内容
message.setContent(content, "text/html;charset=UTF-8");
//设置发送时间
message.setSentDate(new Date());
//保存改变
message.saveChanges();
//创建Transport对象
Transport transport = session.getTransport();
//获取连接到邮件服务器
transport.connect("发件人邮箱@qq.com" , "******授权码******");
//发送信息
transport.sendMessage(message, message.getAllRecipients());
//关闭连接
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
}
return true;
}
总结:
没有解决不了的技术,只有你找不到的博主,谢谢你的关注,希望能帮助到你



