电子邮件
电子邮件是依靠邮箱服务器来完成的;
SMTP服务器地址:一般是 smtp.xxx.com,例如:qq邮箱是smtp.qq.com。
电子邮箱(E-Mail地址)的获得需要在邮件服务器上进行申请。比如我们要使用QQ邮箱,就需要开通邮箱功能;
传输协议
SMTP协议
发送邮件:
通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。
POP3协议
接收邮件:
通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。
邮件收发原理
- 发送方通过smtp协议连接到Smtp服务器,将邮件发送到服务器中,并保存到邮箱空间;
- 发送方的邮箱与接受方的邮箱建立连接,然后将邮件发送到接收方的邮箱;
- 接收方的邮箱将邮件接收并保存到邮箱空间,通知接收方有邮件;
- 接收方通过Pop3协议连接到Pop3服务器收取邮件;
- 接收方从邮箱空间下载邮件;
Java发送邮件
使用Java应用程序发送 E-mail 十分简单,首先就是在电脑上安装 JavaMail API 和Java Activation Framework (JAF) 。
- 可以从 Java 网站下载最新版本的 JavaMail,打开网页右侧有个 Downloads 链接,点击它下载。
- 可以从 Java 网站下载最新版本的 JAF(版本 1.1.1)。
也可以使用以下链接:
JavaMail 是sun公司(现以被甲骨文收购)为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如前面所讲的SMTP,POP3,IMAP,还有MIME等。我们在使用JavaMail API 编写邮件时,无须考虑邮件的底层实现细节,只要调用JavaMail 开发包中相应的API类就可以了。
1.纯文本文件
1.先在Java中导入包;
2.QQ邮箱中获取对应的权限
QQ邮箱需要安全验证,我们需要获取他对应的权限;
QQ邮箱-->邮箱设置-->账户
将第一条的服务开启(开启服务会生成16位的授权码)
测试编写代码
编写步骤:
- 创建包含邮件服务器的网络连接信息的Session对象。
- 创建代表邮件内容的Message对象
- 连接服务器 transport 通过session对象获取transport,需要捕获抛出异常
- 连接服务器,需要抛出异常
- 连接成功,需要编写邮件
- 创建邮件对象
- 邮件发送人
- 邮件接收人
- 邮件主题
- 邮件内容
6. 发送邮件
7. 关闭连接
1.纯文本邮件
package com.zhang.email;
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.创建配置文件,保存并读取数据
* 2.存属性
* 3.设置发送协议
* 4.设置权限(用户是否需要验证)
* ======================
* 1.创建session会话对象
* 2.连接服务器 transport 通过session对象获取transport,需要捕获抛出异常
* 3.连接服务器,需要抛出异常
* 4.连接成功,需要发送邮件
* 创建邮件对象
* 邮件发送人
* 邮件接收人
* 邮件主题
* 邮件内容
* 5.发送邮件
* 6.关闭连接
* =======================
* QQ特性
* 建立安全的链接
*
* */
Properties properties = new Properties();
//设置QQ邮件服务器
properties.setProperty("mail.host","smtp.qq.com");
//设置邮件发送协议
properties.setProperty("mail.transport.protocol","smtp");
//需要用户验证密码
properties.setProperty("mail.smtp.auth","false");
// 关于QQ邮箱,还要设置SSL加密,加上以下代码即可
MailSSLSocketFactory sf = new MailSSLSocketFactory(