一、邮件开发的相关协议
SMTP : Simple Message Transfer Protocal 也就是发送协议;默认端口是25
POP:Post Office Protocal 字面翻译是邮局协议,也就是接收协议,默认端口是110
二、邮件发送接收的过程
三、准备工作
1.申请邮箱,我这里申请的是网易邮箱,接着登录,在设置里开通POP3/SMTP服务,开通这两个服务后才可以在第三方发送接收邮件
2.启用客户端授权码,用以第三方登录连接网易服务器
四、编写代码
package com.mail.test;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class TestMail {
public static void main(String[] args) throws Exception {
Properties props = new Properties(); //创建Properties对象,用于存放key-value
props.put("mail.smtp.host", "smtp.163.com"); //指定邮件发送服务器地址
props.put("mail.smtp.auth", "true"); //服务器是否需要验证用户的身份信息
Session session = Session.getInstance(props); //得到session
session.setDebug(true); //代表启用debug模式,可以在控制台输出SMTP协议应答的过程
//创建一个MimeMessage格式的邮件
MimeMessage message = new MimeMessage(session);
//设置邮件的发送者,Address是抽象类,找子类创建对象
Address fromAddress = new InternetAddress("[email protected]"); //邮件地址
message.setFrom(fromAddress); //设置发件箱
//设置邮件的接收者
Address toAddress = new InternetAddress("[email protected]"); //邮件地址
message.setRecipient(RecipientType.TO, toAddress); //设置接收者地址
//设置邮件的信息
message.setSubject("新年快乐"); //邮件主题
message.setText("朋友,元旦已到,愿你快乐"); //邮件内容
//保存邮件
message.saveChanges();
//得到发送邮件的通道
Transport transport = session.getTransport("smtp"); //传入发送协议
//通道链接到服务器
transport.connect("smtp.163.com", "[email protected]", "dirkzh00");
//通道发送
transport.sendMessage(message, message.getAllRecipients());
//关闭通道
transport.close();
}
}
五、发送邮件
1.控制台打印相关信息
2.发送邮件成功
写在最后:
需要注意的地方:一定要开通POP/SMTP服务;然后获取第三方登录的授权码;另外如果你是网易邮箱给QQ邮箱发消息,QQ邮箱默认是垃圾邮件,需要你在垃圾箱重拾一下,之后便可以了;还有就是如果你想用QQ邮箱做服务端,开通那两个服务会有点麻烦。我只试了网易和QQ这两个邮箱,你可以多试试,有问题添加微信DirkZhouzlw。
谢谢你的阅读,朋友。
欢迎关注微信公众号获取更多