JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件。这一机制被广泛的用在注册激活和垃圾邮件的发送等方面。
本次邮件发送的实例采用的是SMTP协议,SMTP(Simple Mail Transfer Protocal)称为简单邮件传输协议,目标是向用户提供高效、可靠的邮件传输。工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。 SMTP是个请求/响应协议,它监听25号端口,用于接收用户的邮件请求,并与远端邮件服务器建立SMTP连接。
JavaMail用到的jar包,一共3个。下载之后要放到libs目录下,然后右击工程,选择Builder Path–》Configure Build Path,Libraries,Add JARs,选择工程目录下的libs下的jar包。
所需jar包下载地址:http://pan.baidu.com/s/1pKQvzAz 密码:d0yc
邮件发送代码
package utils;
import java.util.Date;
import java.util.Properties;
import java.util.UUID;
import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class EmailTest {
public static void main(String[] args) throws MessagingException {
//创建一封邮件
//用于连接邮件服务器的参数配置(发送邮件时才需要用到)
Properties properties = new Properties();
// 创建信件服务器
properties.put("mail.smtp.host", "smtp.163.com");//主机host,跟邮件发送者必须一致
properties.put("mail.smtp.auth", "true"); // 通过验证,也就是用户名和密码的验证,必须要有这一条
properties.put("mail.smtp.port", 465);//加密服务端口465
// properties.put("mail.smtp.ssl.enable", true);
// 发送邮件协议名称
properties.setProperty("mail.transport.protocol", "smtp");
properties.put("mail.smtp.ssl.enable", "true");//加密
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication(){
//登陆邮箱,密码
return new PasswordAuthentication("user1@163.com","password1");
}
});
// Session session = Session.getInstance(properties);
//根据参数配置,创建回话对象(为了发送邮件准备的)
//Session session = Session.getDefaultInstance(properties);
//debug
session.setDebug(true);
//创建邮件对象
MimeMessage message = new MimeMessage(session);
//邮件几个必须的:发件人,收件人,邮件主题,邮件内容
try {
//1、from :发件人
// 其中 InternetAddress 的三个参数分别为: 邮箱, 显示的昵称(只用于显示, 没有特别的要求), 昵称的字符集编码
// 真正要发送时, 邮箱必须是真实有效的邮箱。
message.setFrom(new InternetAddress("user1@163.com"));
//2、TO :收件人
//MimeMessage.RecipientType.TO 直接发送人
//MimeMessage.RecipientType.CC 抄送人(可选)
//MimeMessage.RecipientType.BCC 秘密发送人(可选)
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("user2@163.com"));
//3、Suject :邮件主题
message.setSubject("邮箱验证","UTF-8");
//邮件内容
///邮件的内容
//4、Content :邮件正文(可以使用html标签)
message.setContent("Java邮箱测试", "text/html;charset=UTF-8");
//5、设置显示的发件时间
message.setSentDate(new Date());
//6、保存前面设置的
message.saveChanges();
//7、发送
Transport.send(message);
System.out.println("邮件已经发送完毕");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}