(一)邮箱服务器
1.邮箱服务器的基本概念
邮件的客户端:可以只安装在电脑上的也可以是网页形式的
邮件服务器:起到邮件的接受与推送的作用
邮件发送的协议:
协议:就是数据传输的约束
发送邮件的协议:SMTP
接受邮件的协议:POP3 IMAP
服务器地址: POP3服务器:pop.126.com
SMTP服务器:smtp.126.com
IMAP服务器:imap.126.com
2.邮箱的发送过程
例:tom@163.com
发送邮件给 lucy@qq.com
(1)tom
启动邮箱客户端,拟制邮件,点击发送
(2)客户端将邮件传输到网易的SMTP
邮箱服务器
(3)网易的SMTP
邮箱服务器将邮件再转发至腾讯的SMTP
邮箱服务器
(4)腾讯的SMTP
邮箱服务器接收到邮件以后将该邮件放到整个腾讯邮箱服务器(分为SMTP
和POP3
邮箱服务器)的公共区域
(5)lucy启动桌面客户端向腾讯的POP3
邮箱服务器索要邮件或者等待腾讯的POP3
邮箱服务器周期性的向服务器推送邮件
以上就是tom@163.com
发送邮件给 lucy@qq.com
的全过程,若是回复邮件,同理。
3.邮箱服务器的安装
1)双击邮箱服务器软件
任意一款邮箱服务器即可(这里以eyoumailserversetup.exe
为例)
2)对邮箱服务器进行配置
4.邮箱客户端的安装
这里以安装foxmail65.exe
为例
(二)使用代码操作邮箱服务器
1、引入jar包
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
2、创建工具类
package org.pc.util;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author 咸鱼
* @date 2018/8/16 19:03
*/
public final class EmailUtil {
/**
* 发送邮件
* @param recipientMail 收件人的邮箱
* @param subject 邮件主题
* @param content 邮件内容
*/
public static void sendMail(String recipientMail, String subject, String content) throws IOException, MessagingException {
//1、邮件服务器设置
InputStream resourceAsStream = EmailUtil.class.getClassLoader().getResourceAsStream("conf/email.properties");
final Properties properties = new Properties();
properties.load(resourceAsStream);
//2、账号和密码
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//在邮箱服务器上注册的账号和密码
return new PasswordAuthentication(properties.getProperty("mail.account"),
properties.getProperty("mail.password"));
}
};
//3、与邮件服务器建立连接:session
Session mailSession = Session.getDefaultInstance(properties, authenticator);
//4、编写邮件
Message message = new MimeMessage(mailSession);
//4.1发件人
message.setFrom(new InternetAddress(properties.getProperty("mail.address")));
//4.2收件人, to:收件人, cc:抄送, bcc:暗送(密送)
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipientMail));
//4.3主题
message.setSubject(subject);
//4.4内容
message.setContent(content, "text/html;charset=UTF-8");
//5、发送消息
Transport.send(message);
}
}