javamail1_4_7:导入以下架包即可
SMTP:发邮件协议
pop3:接收邮件协议(第三版)
一、不带附件的JavaMail
package javamail;
import java.util.Properties;
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;
import javax.mail.internet.MimeMessage.RecipientType;
import org.junit.Test;
public class JavaMailTest {
@Test
public void fun() throws MessagingException {
/*
* 1.获取session,类似connection,这里指的是连接服务器
*/
Properties props = new Properties();// 设置配置参数
props.setProperty("mail.host", "smtp.126.com");// 设置服务器
props.setProperty("mail.smtp.auth", "true");// 设置是否需要认证,比如是否需要密码等
Authenticator authenticator = new Authenticator() {//登录 认证
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);//该邮箱的用户名和密码(其实不是密码,出于安全考虑第三方客户端需要使用授权码,需要在邮箱服务端开启,否则会报错550错误)
}
};
Session session = Session.getInstance(props, authenticator);
/*
* 设置邮件信息
*/
MimeMessage msg = new MimeMessage(session);//邮件对象
msg.setFrom(new InternetAddress("x_126mail@126.com"));//设置发件人的邮箱地址
msg.setRecipients(RecipientType.TO, "x_163mail@163.com");//设置收件的邮箱地址,第一接收者
//msg.setRecipients(RecipientType.CC, address);//设置收件的邮箱地址,抄送:给该邮箱也发送一份,第一接收者(所有的收件人都)能看到
//msg.setRecipients(RecipientType.BCC, address);//设置收件的邮箱地址,暗送:给该邮箱暗地里也发送一份,除了该接收者其他人都不知道
msg.setSubject("测试");//主题
msg.setContent("就是javaMail的测试", "text/html;charset=utf-8");//内容
/*
* 发送邮件
*/
Transport.send(msg);
}
}
————————————————————————————————————————————————————————
二、带附件的JavaMail
package javamail;
/*
* 带有附件的javamail的测试
*/
import java.io.File;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import org.junit.Test;
import com.sun.mail.util.MimeUtil;
public class JavaMailTest {
@Test
public void fun() throws Exception {
/*
* 1.获取session
*/
Properties props = new Properties();
props.setProperty("mail.host", "smtp.126.com");// 服务器
props.setProperty("mail.smtp.auth", "true");// 是否验证
Authenticator authenticator = new Authenticator() {// 验证
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// TODO Auto-generated method stub
return new PasswordAuthentication(username, password);// 登录该服务器
}
};
Session session = Session.getInstance(props, authenticator);
/*
* 2.获取message
*/
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("x_126mail@126.com"));// 发件人邮箱地址
msg.setRecipients(RecipientType.TO, "x_163mail@163.com");// 收件人
msg.setSubject("带有附件的javamail测试");
/*
* 内容不再单一,而是由文本和附件组成,也叫做mail多部件MimeMultipart,其实就是一个集合
*/
MimeMultipart list = new MimeMultipart();
// 创建mail多部件对象
MimeBodyPart part = new MimeBodyPart();
MimeBodyPart part2 = new MimeBodyPart();
// 添加多个部件内容
part.setContent("我带有附件,哈哈。。。", "text/html;charset=utf-8");
part2.attachFile(new File("D:/[www.java1234.com]java_ee_api_中英文对照版.chw"));//附件
part2.setFileName(MimeUtility.encodeText("javaee中英文对照api.chw"));//附件新的名称,encodeText:用来处理中文乱码问题
// 多部件添加
list.addBodyPart(part);
list.addBodyPart(part2);
//添加邮件内容
msg.setContent(list);
// 发送
Transport.send(msg);
}
}