需要加载1个包:mail.jar
代码:
package com.sxjyatc.senmail;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
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.MimeMultipart;
import javax.mail.internet.MimeUtility;
import org.junit.Test;
import com.sun.mail.util.MailSSLSocketFactory;
public class SendMail2 {
@Test
public void test() throws Exception{
Properties prop = new Properties();
// 开启debug调试,以便在控制台查看
prop.setProperty("mail.debug", "true");
// 设置邮件服务器主机名
prop.setProperty("mail.host", "smtp.qq.com");
// 发送服务器需要身份验证
prop.setProperty("mail.smtp.auth", "true");
// 发送邮件协议名称
prop.setProperty("mail.transport.protocol", "smtp");
// 开启SSL加密,否则会失败
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
// 创建session
Session session = Session.getInstance(prop);
// 通过session得到transport对象
Transport ts = session.getTransport();
// 连接邮件服务器:邮箱类型,帐号,授权码代替密码(更安全)
ts.connect("smtp.qq.com","86497564", "tgrwnifvwfibbhbh");//后面的字符是授权码,用qq密码反正我是失败了(用自己的,别用我的,这个号是我瞎编的,为了。。。。)
// 创建邮件
Message message = createSimpleMail(session);
// 发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}
/**
* @Method: createSimpleMail
* @Description: 创建一封只包含文本的邮件
*/
public static MimeMessage createSimpleMail(Session session)
throws Exception {
// 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 指明邮件的发件人
message.setFrom(new InternetAddress("86497564@qq.com"));
// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
message.setRecipient(Message.RecipientType.TO, new InternetAddress("1097637148@qq.com"));
// 邮件的标题
message.setSubject("JavaMail测试");
// 邮件的文本内容
message.setContent("JavaMail发送邮件成功!", "text/html;charset=UTF-8");
// 返回创建好的邮件对象
message.setContent(createMailList(session));
return message;
}
/**
* 当发送包含附件的邮件时,邮件就为多部件形式
* 1,创建一个多部件内容!MimeMultipart
* 2,MimeMultipart 就是一个集合,用来装载多个主题部件
* 3,我们需要创建两个主体部件,一个是文本内容,另一个附件的
* 4,主题部件 叫mimeBodypart
* 5,把Mimemultipart设置给 Mimemessage的内容
* @param session
* @return
* @throws IOException
*/
public static MimeMultipart createMailList(Session session) throws IOException{
//创建多部分体
MimeMultipart list = new MimeMultipart();
//创建MinebODYPART
MimeBodyPart part1 = new MimeBodyPart();
MimeBodyPart part2 = new MimeBodyPart();
try {
part1.setContent("这是一封包含邮件垃圾邮件", "text/html;charset=utf-8");
//file 的名称用作此部分的文件名称,file 中的数据用作此部分的数据
part2.attachFile(new File("d:/demo.jpg"));
part2.setFileName(MimeUtility.encodeText("白冰.jpg"));
//把主部件添加到集合中
list.addBodyPart(part1);
list.addBodyPart(part2);
return list;
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//把他设置给邮件做邮件的内容
return null;
}
}