Email邮件
JavaMail
使用JavaMail发送邮件的5个步骤
// 1、创建session
Session session = Session.getInstance(prop);
// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
// 2、通过session得到transport对象
Transport ts = session.getTransport();
// 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证。
ts.connect(mail_host,mailFrom, password_mailFrom);
// 4、创建邮件
Message message = createSimpleMail(...);
// 5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
发送只包含文本的 简易邮件
public static MimeMessage createSimpleMail(Session session, String mailfrom, String mailTo, String mailTittle,String mailText) throws Exception {
// 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 指明邮件的发件人
message.setFrom(new InternetAddress(mailfrom));
// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
// 邮件的标题
message.setSubject(mailTittle);
// 邮件的文本内容
message.setContent(mailText, "text/html;charset=UTF-8");
// 返回创建好的邮件对象
return message;
}
发送带图片的邮件
public static MimeMessage createImageMail(Session session) throws Exception {
// 创建邮件
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(mailFrom)); // 发件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo)); // 收件人
message.setSubject(mailTittle);// 邮件标题
MimeBodyPart text = new MimeBodyPart();// 邮件正文数据
text.setContent(mailText + "<img src='cid:xxx.jpg'>", "text/html;charset=UTF-8");// 需要修改
MimeBodyPart image = new MimeBodyPart();// 准备图片数据
DataHandler dh = new DataHandler(new FileDataSource(photoSrc));// 需要修改
image.setDataHandler(dh);
image.setContentID("xxx.jpg");// 需要修改
MimeMultipart mm = new MimeMultipart();// 描述数据关系
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related");
message.setContent(mm);
message.saveChanges();
message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));// 将创建好的邮件写入到F盘以文件的形式进行保存
return message;
}
发送带附件的邮件
public static MimeMessage createAttachMail(Session session) throws Exception {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(mailFrom)); // 发件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人
message.setSubject(mailTittle);// 邮件标题
MimeBodyPart text = new MimeBodyPart();// 创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
text.setContent(mailText, "text/html;charset=UTF-8");
MimeBodyPart attach = new MimeBodyPart();// 创建邮件附件
DataHandler dh = new DataHandler(new FileDataSource(photoSrc));// 需要修改
attach.setDataHandler(dh);
attach.setFileName(dh.getName());
MimeMultipart mp = new MimeMultipart(); // 创建容器描述数据关系
mp.addBodyPart(text);
mp.addBodyPart(attach);
mp.setSubType("mixed");
message.setContent(mp);
message.saveChanges();
message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));// 将创建的Email写入到F盘存储
return message;
}
发送图片和附件的复杂邮件
public static MimeMessage createMixedMail(Session session) throws Exception {
MimeMessage message = new MimeMessage(session);// 设置邮件的基本信息
message.setFrom(new InternetAddress(mailFrom)); // 发件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));// 收件人
message.setSubject(mailTittle);
MimeBodyPart text = new MimeBodyPart();// 正文
text.setContent(mailText+"<br/><img src='cid:aaa.jpg'>", "text/html;charset=UTF-8");
MimeBodyPart image = new MimeBodyPart(); // 图片
image.setDataHandler(new DataHandler(new FileDataSource(photoSrc)));
image.setContentID("aaa.jpg");
MimeBodyPart attach = new MimeBodyPart();// 附件1,可有多个附件
DataHandler dh = new DataHandler(new FileDataSource(fileList.get(0)));
attach.setDataHandler(dh);
attach.setFileName(dh.getName());
MimeMultipart mp1 = new MimeMultipart();// 描述关系:正文和图片
mp1.addBodyPart(text);
mp1.addBodyPart(image);
mp1.setSubType("related");
MimeMultipart mp2 = new MimeMultipart(); // 描述关系:正文和附件
mp2.addBodyPart(attach);
MimeBodyPart content = new MimeBodyPart();// 代表正文的bodypart
content.setContent(mp1);
mp2.addBodyPart(content);
mp2.setSubType("mixed");
message.setContent(mp2);
message.saveChanges();
message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml"));
return message;
}
SimpleEmail 简易邮件
发送只包含文本的 简易邮件
SimpleEmail email = new SimpleEmail();
email.setTLS(needTls); //是否TLS校验
email.setSSL(needSsl); //是否SSL校验
email.setHostName(serverAddr); //邮箱地址:smtp.qq.com;smtp.163.com
email.setSmtpPort(serverPort); //邮箱端口: 587/465; 25
email.setAuthentication(recUserName,recUserPwd); //用户名和密码
email.addTo(mail.getTo()); //接收方
email.addCc(mail.getCC());//抄送方
email.addBcc(mail.getBCC());//密送方
email.setFrom(fromMailAddr); //发送方,这里可以写多个
email.setCharset("GB2312");//格式
email.setSubject(mail.getSubject()); //标题
email.setMsg(mail.getContent()); //内容
email.send(); //发送