javaMail介绍
JavaMail 是sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如前面所讲的SMTP,POP3,IMAP,还有MIME等。我们在使用JavaMail API 编写邮件时,无须考虑邮件的底层实现细节,只要调用JavaMail 开发包中相应的API类就可以了。
邮件协议
1、SMTP协议——发邮件协议
全称为Simple Mail Transfer Protocol(简单邮件传输协议),他定义了邮件客户端软件与SMTP服务器之间、以及两台SMTP服务器之间的通讯规则。
端口号:25
2、POP3协议——收邮件协议
全称为Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。
端口号:110
邮件发送流程
代码实现(以qq邮箱为例)
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class TestEmail {
public static void main(String[] args) throws Exception {
// 服务器的设置
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", "smtp.qq.com");
props.setProperty("mail.smtp.auth", "true");
// 账号和密码
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//发送人账号和密码
return new PasswordAuthentication("XXX@qq.com", "XXX");
}
};
// 1 与服务器建立连接:Session
Session session = Session.getDefaultInstance(props, authenticator);
// 2 编写邮件:Message
Message message = new MimeMessage(session);
// 2.1 发件人
message.setFrom(new InternetAddress("XXX@qq.com"));
// 2.2 收件人 , to:收件人 , cc :抄送,bcc:暗送(密送)
message.setRecipient(RecipientType.TO, new InternetAddress("XXX@qq.com"));
// 2.3 主题
message.setSubject("祝贺邮件");
// 2.4 内容
message.setContent("恭喜你成功注册,成为了X宝的会员!!!。", "text/html;charset=UTF-8");
// 3 将消息进行发送:Transport
Transport.send(message);
}
}
注意
1.开启SMTP和POP3服务
2.发送人的密码
jar包下载
mailapi.jar:https://mvnrepository.com/artifact/com.sun.mail/mailapi
smtp.jar:https://mvnrepository.com/artifact/com.sun.mail/smtp