传输协议
SMTP协议:
发送邮件:我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为smtp服务器。
POP3协议:
我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)
发送邮件主要有四个核心类,我们在编写时,记住这四个核心类,就很容易编写出Java邮件处理程序。
纯文本邮件:
1.先在项目中导入jar包
activation.jar
mail.jar
获取QQ邮箱对应的权限(我使用的是QQ邮箱,其他邮箱你可以在邮箱官网查阅一下步骤),qq邮箱需要安全验证,我们需要获取对应的权限,
qq邮箱—>邮箱设置---->账户
纯文本邮件发送的代码:
package com.wang.mail;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.GeneralSecurityException;
import java.util.Properties;
public class SendMail {
public static void main(String[] args) throws MessagingException, GeneralSecurityException {
//1.创建一个配置文件保存并读取信息
Properties properties = new Properties();
//设置QQ邮件服务器
properties.setProperty("mail.host", "smtp.qq.com");
//设置发送协议
properties.setProperty("mail.transport.protocol", "smtp");
//设置用户是否需要验证
properties.setProperty("mail.smtp.auth", "true");
// 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.socketFactory", sf);
//1.创建一个session会话对象
Session session = Session.getDefaultInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("1614406553@qq.com", "wbhnqznkahzsdhdg");
}
});
//通过session开启debug模式,查看所有的过程
session.setDebug(true);
//2.连接服务器,通过session对象获得Transport,需要补货或者抛出异常
Transport transport = session.getTransport();
//1.连接服务器,需要抛出异常
transport.connect("smtp.qq.com", "1614406553@qq.com", "rlrgzzfdmmedbccb");
//连接之后我们需要发送邮件
//创建邮件对象
MimeMessage mimeMessage = new MimeMessage(session);
//邮件发送人
mimeMessage.setFrom(new InternetAddress("1614406553@qq.com"));
mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("1945645928@qq.com"));
//邮件标题
mimeMessage.setSubject("Hello,景峰");
//邮件内容
mimeMessage.setContent("给大爷笑一个","text/html;charset=UTF-8");
//发送邮件
transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
//关闭连接
transport.close();
}
}