邮件收发
电子邮件
要在网络上实现邮件功能,必须要有专门的邮件服务器。
这些邮件服务器类似于现实生活中的邮局,它主要是负责接收用户投递过来的邮件,并把邮件投递到邮件接受者的电子邮箱中。
SMTP服务器地址:一般是smpt.xxx.com,比如163邮箱是smpt.163.com,QQ邮箱是smpt.qq.com。
电子邮箱的获得需要在邮件服务器上进行申请。比如我们要使用QQ邮箱,就需要开通邮箱功能;
传输协议
SMTP协议
发送邮件
我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。
pop3协议
接收邮件
我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为pop3服务器(邮件接收服务器)。
邮件收发原理
1.用户1通过SMTP协议连接到SMTP服务器,然后发送一封邮件给网易的邮件服务器
2.网易分析发现需要去QQ的邮件服务器,通过SMTP协议将邮件转投给QQ的SMTP服务器
3.QQ将接收到的邮件存储在目标账号空间中
4.目标账号通过pop3协议连接到pop3服务器中收取邮件
5.目标账号从自己的空间中取出自己的邮件
6.pop3服务器将取出来的邮件送到目标账号手中
【注意】有可能你收件人地址,发件人地址等信息都正确了,控制台也打印了正确的信息,但是在收件箱就是收不到信息。这是因为可能收件箱服务器拒收了你发的邮件(比如认为你的邮件是广告),这时候可能在垃圾箱里能找到,可能找不到。解决办法是重复的邮件内容不要多次发送,或者更换收件箱试试
Java发送邮件
概述
我们将用代码完成邮件的发送。这在实际项目中的应用非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进行任务提醒等。
使用Java发送email十分简单,但是首先你得准备JavamailAPI和Java Activation Framework 。
得到两个jar包:
•mail.jar
•activation.jar
JavaMail 是sun公司(现以被甲骨文收购)为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如前面所讲的SMTP,POP3,IMAP,还有MIME等。我们在使用JavaMail API 编写邮件时,无须考虑邮件的底层实现细节,只要调用JavaMail 开发包中相应的API类就可以了。
我们可以先尝试发送一封简单的邮件,确保电脑可以连接网络。
•创建包含邮件服务器的网络连接信息的Session对象。
•创建代表邮件内容的Message对象
•创建Transport对象,连接服务器,发送Message,关闭连接
主要有四个核心类,我们在编写程序时,记住这四个核心类,就很容易编写出Java邮件处理程序。
纯文本文件
现在项目中导入jar包
QQ邮箱中获取相对应的权限
QQ邮箱需要安全验证,我们需要获取他对应的权限;
QQ邮箱–>邮箱设置–>账户
编写测试代码
package com.kuang.mail;
import com.sun.mail.util.MailSSLSocketFactory;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class SendEmail {
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.ssl.enable", "true");
prop.put(