/*
* http://www.daimami.com
****************************************************************************
* 源文件名: MailUtil.java
* 功能: 功能概述
* 版本: @version 1.0
* 编制日期: May 27, 2012
* 说明: 主要功能描述
* 修改历史: (主要历史变动原因及说明)
* May 27, 2012 | Aloys | Change Description
* May 27, 2012 | Aloys | Created
*/
package com.aloys.framework.util;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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.MimeMultipart;
/**
* 通过QQ企业邮箱发送密码找回邮件
*
* @author aloys
*/
public class MailUtil {
private static String fromMail = "yourMail";
private static String fromPass = "yourMailPass";
/**
* 发送邮件
*
* @param email
* @param title
* @param content
*/
public static void sendMail(String email, String title, String content,
String nickName) {
try {
// 建立邮件会话
Properties props = new Properties();
// 存储发送邮件服务器的信息
props.put("mail.smtp.host", "smtp.exmail.qq.com");
// 同时通过验证
props.put("mail.smtp.auth", "true");
// 根据属性新建一个邮件会话
Session mailSession = Session.getInstance(props);
// 由邮件会话新建一个消息对象
MimeMessage message = new MimeMessage(mailSession);
// 设置邮件
InternetAddress from = new InternetAddress(javax.mail.internet.MimeUtility.encodeText(nickName)+ "");
// 设置发件人的地址
message.setFrom(from);
// 设置收件人,并设置其接收类型为TO
InternetAddress to = new InternetAddress(email);
message.setRecipient(Message.RecipientType.TO, to);
// 设置标题
message.setSubject(title);
// 设置信件内容
Multipart mp = new MimeMultipart();
MimeBodyPart mbp1 = new MimeBodyPart();
// 设置内容
mbp1.setText(content);
mp.addBodyPart(mbp1);
// 设置附件
message.setContent(mp, "text/html;charset=GBK");
// 设置发信时间
message.setSentDate(new Date());
// 存储邮件信息
message.saveChanges();
// 发送邮件
Transport transport = mailSession.getTransport("smtp");
// 以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码
transport.connect("smtp.exmail.qq.com", fromMail, fromPass);
// 发送邮件,其中第二个参数是所有已设好的收件人地址
transport.sendMessage(message, message.getAllRecipients());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 发送
*
* @param email
* @param title
* @param htmlContent
* @param nickName
*/
public static void sendHTMLMail(String [] emails, String title,
String htmlContent, String nickName) {
try {
// 建立邮件会话
Properties props = new Properties();
// 存储发送邮件服务器的信息
props.put("mail.smtp.host", "smtp.exmail.qq.com");
// 同时通过验证
props.put("mail.smtp.auth", "true");
// 根据属性新建一个邮件会话,并且加入账户验证
Session mailSession = Session.getInstance(props,new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromMail,fromPass);
}
});
// 由邮件会话新建一个消息对象
MimeMessage mailMessage = new MimeMessage(mailSession);
// 设置邮件
InternetAddress from = new InternetAddress(javax.mail.internet.MimeUtility.encodeText(nickName)+ "");
// 设置发件人的地址
mailMessage.setFrom(from);
// 创建邮件的接收地址(数组)
InternetAddress [] sendTo = new InternetAddress[emails.length];
for (int i = 0; i < emails.length; i++) {
sendTo[i] = new InternetAddress(emails[i]);
}
mailMessage.setRecipients(javax.mail.internet.MimeMessage.RecipientType.TO, sendTo);
// 设置邮件消息的主题
mailMessage.setSubject(title);
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 设置HTML内容 建立第一部分: 文本正文
html.setContent(htmlContent, "text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 将MiniMultipart对象设置为邮件内容 建立第二部分:附件
mailMessage.setContent(mainPart);
// if (mailInfo.getAttachFileNames().length > 0) {
// for (int i = 0; i < mailInfo.getAttachFileNames().length; i++) {
// if (!mailInfo.getAttachFileNames()[i].equals("")) {
// // 建立第二部分:附件
// html = new MimeBodyPart();
// // 获得附件
// DataSource source = new FileDataSource(mailInfo
// .getAttachFileNames()[i]);
// // 设置附件的数据处理器
// html.setDataHandler(new DataHandler(source));
// // 设置附件文件名
// html.setFileName(mailInfo.getAttachFileNames()[i]);
// // 加入第二部分
// mainPart.addBodyPart(html);
// }
// }
// }
// Transport transport = mailSession.getTransport("smtp");
// // 以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码
// transport.connect("smtp.exmail.qq.com", fromMail, fromPass);
// 发送邮件
Transport.send(mailMessage);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}