javaMail邮件发送功能主要用于发送邮件给用户,起到提醒或者邮件验证功能,本javaMail发送邮件demo可以发送html,附件等,发送方为126邮件服务器,你也可以使用163,qq邮件服务器。
1:新建一个java项目,在lib中加入mail.jar这个jar包,如果你是maven项目,可以在pom.xml中加入javaMail maven依赖。
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency>
2.新建一个类,本人将javamail写在了main函数里,用于简单的演示,整个代码如下,很简单。
//演示javamail发带有附件的邮件
public class Demo3 {
public static void main(String[] args) throws Exception {
//1.Session类: 用于建立程序和服务器的连接
/**
* 参数一:配置信息 如:连接的服务器 验证方式
*
*/
Properties prop = new Properties();
//发送邮件的服务器的地址
prop.setProperty("mail.host", "smtp.126.com");
//是否需要验证登录
prop.setProperty("mail.smtp.auth", "true");
//Authenticator:用于对用户名和密码进行加密
Session session = Session.getDefaultInstance(prop,new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("ericxu_12345@126.com","ericxxx");
}
});
//开启debug功能:为了查看整个邮件发送的过程
session.setDebug(true);
//2.MimeMessage类: 封装一封邮件内容
MimeMessage mail = new MimeMessage(session);
//2.1 发件人
mail.setFrom(new InternetAddress("ericxu_12345@126.com")); // 和登录的用户名保持一致
//2.2 收件人
/**
* 参数一:收件类型
* TO : 发送
* CC: 抄送
* BCC: 密送
* A -> B(TO) -> C(CC) -> D(BCC)
* 1)BCD都能收到邮件
* 2)B和C互相能看到对方收到邮件,但是B和C看不到D收到邮件
*/
mail.setRecipient(RecipientType.TO, new InternetAddress("ericxu_12345@163.com"));
//2.3 主题
mail.setSubject("这是javamail的带附件的邮件2");
//创建一个附件: MimeBodyPart对象
MimeBodyPart bodyPart1 = new MimeBodyPart();
//添加一个文件
bodyPart1.attachFile(new File("c:/mm.jpg"));
MimeBodyPart bodyPart2 = new MimeBodyPart();
//添加一个文件
bodyPart2.attachFile(new File("c:/employee.xml"));
//有了附件之后,正文也是一个MimeBodyPart
MimeBodyPart bodyPart3 = new MimeBodyPart();
//添加html正文
bodyPart3.setContent("<font color='red'>这是正文</font>", "text/html;charset=utf-8");
//纯文本正文
//bodyPart3.setContent("这是邮件的正文内容", "text/plain;charset=utf-8");
//创建一个MimeMultipart对象,用于封装多个附件对象
MimeMultipart multipart = new MimeMultipart();
//注意:正文一定是方法第一个!!!!(0代表第一个)
multipart.addBodyPart(bodyPart3,0);
multipart.addBodyPart(bodyPart1,1);
multipart.addBodyPart(bodyPart2,2);
//把MimeMultipart放入MimeMessage
mail.setContent(multipart);
//3.Transport类:发送一封邮件
Transport.send(mail);
}
}如果你的javaMail邮件发送方为qq或者163,只需要将上面的邮件服务器地址改一下,例如使用qq邮件服务器,就将上面代码中prop.setProperty("mail.host", "smtp.126.com")方法中的"smtp.126.com"改成"smtp.qq.com"就ok了。