邮箱相关的概念
邮件收发协议
发送邮件协议:SMTP(简单邮件传输协议)
接收邮件协议:①IMAP(Internet邮件访问协议)②POP3 (邮局协议版本3)
邮件客户端
邮件服务器
网易邮箱(163邮箱)发送/接收邮件服务器地址:
- SMTP服务器:
smtp.163.com
- POP3服务器:
pop.163.com
- IMAP服务器:
imap.163.com
QQ邮箱发送/接收邮件服务器地址:
- SMTP服务器(端口465或587):
smtp.qq.com
- POP3服务器(端口995):
pop.qq.com
邮件收发简要过程
有的邮箱客户端,可能要我们自己去收信,请求收件服务器得到邮件。
使用Java发送邮件(JavaMail的使用)
1.jar包相关
2.使用案例
这里使用一个找的封装了发送邮件的工具类MailUtils
测试,使用第三方邮件客户端,即写的java程序,以QQ邮箱账号发送邮件,在网易的网页版客户端接收这封邮件。
- 发送邮件工具类
MailUtils
/**
* 发送邮件工具类
*/
public final class MailUtils {
private MailUtils(){}
/**
* 发送邮件
* @param email 收件人的邮箱地址
* @param subject 邮件主题
* @param emailMsg 邮件内容
*/
public static void sendMail(String email, String subject, String emailMsg)
throws AddressException, MessagingException {
// 1.[连接发件服务器]创建一个程序与发件人的 发送邮件服务器会话对象 Session
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "SMTP");//邮件发送协议
props.setProperty("mail.host", "smtp.qq.com");//邮件发送服务器的地址(如QQ邮箱的发件服务器地址SMTP服务器: smtp.qq.com)
props.setProperty("mail.smtp.auth", "true");//指定验证为true
// 创建验证器
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//发件人的用户名(不带后缀的,如QQ邮箱的@qq.com不用写)和授权码(这里一般不使用密码,为避免密码泄露,用授权码代替密码登录第三方邮件客户端)
//授权码:用于登录第三方邮件客户端的专用密码。 第三方邮件客户端:如这个java程序。
return new PasswordAuthentication("QQ邮箱地址不带@qq.com", "开启POP3/SMTP服务得到的授权码");
}
};
Session session = Session.getInstance(props, auth);
// 2.[创建一封邮件]创建一个Message,它相当于是邮件内容
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("创建验证器时你用的用户名@qq.com")); // 设置发送者的邮箱地址
message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者
message.setSubject(subject);//邮件主题
message.setContent(emailMsg, "text/html;charset=utf-8");//设置邮件的内容
// 3.[发送邮件]创建 Transport用于将邮件发送
Transport.send(message);
}
}
- 测试类MailTest
public class MailTest {
@Test
public void test1(){
try {
/**
* @param email 收件人的邮箱地址
* @param subject 邮件主题
* @param emailMsg 邮件内容
*/
MailUtils.sendMail("网易邮箱地址@163.com","欢迎回来","哈喽");
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行后在网易的网页版客户端接收的邮件:
3.使用案例中相关说明
授权码说明:
网易邮箱获取授权码: