邮件发送学习笔记~
一、邮件发送介绍
-
要在网络上实现邮件功能,必须要有专门的邮件服务器!
-
这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中!
-
传输协议
- SMTP协议:发送邮件
- 把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)
- POP3:接收邮件
- 把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)
- SMTP协议:发送邮件
-
邮件发送准备工作:
- JavaMail API
- JavaActivation Framework
- mail.jar(maven仓库下载即可)
- activation.jar(maven仓库下载即可)
-
主要有四个核心类:
二、正戏开始
1、在空项目下新建模块(mail-java),下面建个lib目录,把两个jar包拉进去,Add as Library
2、登录qq邮箱,进入设置–>帐户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
1、简单邮件发送
package com.xiao;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
//发送一封简单的邮件(纯文本)
public class MailDemo01 {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.qq.com"); //何止QQ邮件服务器
prop.setProperty("mail.transport.protocol","smtp"); //邮件发送协议
prop.setProperty("mail.smtp.auth","true"); //需要验证用户名、密码
//关于QQ邮箱,需要设置SSL加密,加上以下代码即可(大厂)
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.enable","true");
prop.put("mail.smtp.ssl.socketFactory",sf);
//5个步骤
//1、创建定义整个应用程序所需的环境信息的Session信息
//下面这个QQ才有!!
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("2675295641@qq.com", "授权码");
}
});
//开启Session的debug模式,可以看到程序发送Email的运行状态
session.setDebug(true);
//2、通过Session得到transport对象
Transport ts = session.getTransport();
//3、使用邮箱的用户名和授权码 连接邮件服务器
ts.connect("smtp.qq.com","2675295641@qq.com","授权码");
//4、创建邮件:写邮件(需要传递Session)
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("2675295641@qq.com")); //发件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress("15007590860@163.com")); //收件人
message.setSubject("只包含文本的简单邮件"); //邮件主题
message.setContent("<h1 style='color:red'>你好啊!</h1>","text/html;charset=UTF-8");
//5、发送邮件
ts.sendMessage(message,message.getAllRecipients());
//关闭
ts.close();
}
}
2、带图片+附件–邮件发送
package com.xiao;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail