<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
public class CommonServiceImpl implements CommonService {
@Override
public void sendEmail(String userName,String password,String fromEmail,String toEmail,String subject,String content) {
if("".equals(toEmail) || null == toEmail){
return;
}
MailUtils mail = new MailUtils();
mail.setHost("mail.hoolai.com");
mail.setUserName(userName);
mail.setPassWord(password);
mail.setFrom(fromEmail);
mail.setTo(toEmail);
mail.setSubject(subject);
mail.setContent(content);
mail.sendMail();
}
}
public class MailUtils {
String to = "";// 收件人
String from = "";// 发件人
String host = "";// smtp主机
String username = "";
String password = "";
String subject = "";// 邮件主题
String content = "";// 邮件正文
List<String> attachPathList = new ArrayList<String>();// 附件文件名列表
/**
*
* @Title:MailUtils
* @Description:默认构造器
*/
public MailUtils() {
}
/**
*
* @Title:MailUtils
* @Description:构造器,提供直接的参数传入
* @param to 目标
* @param from 来自
* @param smtpServer 邮件服务器
* @param username 发件人帐户名
* @param password 发件人密码
* @param subject 主题
* @param content 内容
*/
public MailUtils(String to, String from, String smtpServer,
String username, String password, String subject, String content) {
this.to = to;
this.from = from;
this.host = smtpServer;
this.username = username;
this.password = password;
this.subject = subject;
this.content = content;
}
/**
*
* @Title: setHost
* @Description: 设置邮件服务器地址
* @param host
* @return: void
*/
public void setHost(String host) {
this.host = host;
}
/**
*
* @Title: setPassWord
* @Description: 设置登录服务器校验密码
* @param pwd
* @return: void
*/
public void setPassWord(String pwd) {
this.password = pwd;
}
/**
*
* @Title: setUserName
* @Description: 设置登录服务器校验用户
* @param usn
* @return: void
*/
public void setUserName(String usn) {
this.username = usn;
}
/**
*
* @Title: setTo
* @Description: 设置邮件发送目的邮箱
* @param to
* @return: void
*/
public void setTo(String to) {
this.to = to;
}
/**
*
* @Title: setFrom
* @Description: 设置邮件发送源邮箱
* @param from
* @return: void
*/
public void setFrom(String from) {
this.from = from;
}
/**
*
* @Title: setSubject
* @Description: 设置邮件主题
* @param subject
* @return: void
*/
public void setSubject(String subject) {
this.subject = subject;
}
/**
*
* @Title: setContent
* @Description: 设置邮件内容
* @param content
* @return: void
*/
public void setContent(String content) {
this.content = content;
}
/**
*
* @Title: addAttachfile
* @Description: 添加附件
* @param filename
* @return: void
*/
public boolean addAttachfile(String filename) {
if (new File(filename).exists()) {
attachPathList.add(filename);
return true;
}
return false;
}
/**
*
* @Title: transferChinese
* @Description: 把主题转换为中文
* @param strText
* @return: String
*/
public String transferChinese(String strText) {
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),
"UTF-8"), "UTF-8", "B");
} catch (Exception e) {
e.printStackTrace();
}
return strText;
}
/**
*
* @Title: sendMail
* @Description: 发送邮件
* @return: boolean
*/
public boolean sendMail() {
// 构造mail session
Properties props = new Properties() ;
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(to)) ;
subject = transferChinese(subject);
msg.setSubject(subject);
Multipart mp = new MimeMultipart();
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setContent(content, "text/html;charset=gb2312");
mp.addBodyPart(mbpContent);
if(!attachPathList.isEmpty()) {
for(String filename : attachPathList) {
MimeBodyPart mbp = new MimeBodyPart();
FileDataSource fds = new FileDataSource(filename);
mbp.setDataHandler(new DataHandler(fds));
mbp.setFileName(MimeUtility.encodeText(fds.getName()));
mp.addBodyPart(mbp);
}
attachPathList.clear();
}
msg.setContent(mp);
msg.setSentDate(new Date());
msg.saveChanges() ;
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception mex) {
mex.printStackTrace();
return false;
}
return true;
}
}