类1
<pre name="code" class="html">package com.hx.main.comm.util;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MailFactory {
private static MailProperties defaultProp;
static {
defaultProp = new MailProperties();
defaultProp.setMailServerHost("smtp.exmail.qq.com");
defaultProp.setMailServerPort("25");
defaultProp.setValidate(true);
defaultProp.setFromAddress("support@i3gt.com");
defaultProp.setUserName("support@i3gt.com");
defaultProp.setPassword("hx86363828");// 您的邮箱密码
}
public static Map sendTextMail(String subject, String content, List toAddress,String[] fileName) {
Map resultMap = new HashMap();
if (toAddress != null && toAddress.size() > 0) {
defaultProp.setToAddress(toAddress);
defaultProp.setSubject(subject);
defaultProp.setContent(content);
defaultProp.setAttachFileNames(fileName);
MailUtil.sendTextMail(defaultProp);
} else {
resultMap.put("state", "failed");
resultMap.put("message", "邮件发送失败!错误原因:收件人为空");
}
return resultMap;
}
public static Map sendTextMail(String subject, String content, List toAddress) {
Map resultMap = sendTextMail(subject, content, toAddress,null);
return resultMap;
}
/**
* 发送没有抄送人的邮件
*
* @param subject
* @param content
* @param toAddress
* @return
*/
/*public static Map<String, String> sendHtmlMail(String subject,
String content, List<String> toAddress) {
Map<String, String> resultMap = sendHtmlMail(subject, content,
toAddress ,null);
return resultMap;
}*/
/**
* 发送有抄送人的邮件
*
* @param subject
* @param content
* @param toAddress
* @param ccAddress
* @return
*/
public static Map<String, String> sendHtmlMail(String subject,
String content, List<String> toAddress,List<String> filename) {
Map<String, String> resultMap = new HashMap<String, String>();
if (toAddress != null && toAddress.size() > 0) {
defaultProp.setToAddress(toAddress);
defaultProp.setSubject(subject);
defaultProp.setContent(content);
defaultProp.addFileAffix(filename);
MailUtil.sendHtmlMail(defaultProp);
} else {
resultMap.put("state", "failed");
resultMap.put("message", "邮件发送失败!错误原因:收件人为空");
}
return resultMap;
}
/**
* 发送没有抄送人的邮件
* @param subject
* @param content
* @param toAddress
* @return
*/
public static Map<String, String> sendHtmlMail(String subject,
String content, List<String> toAddress) {
Map<String, String> resultMap = sendHtmlMail(subject, content,
toAddress, null);
return resultMap;
}
}
类2
<pre name="code" class="html">package com.main.comm.util;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class MailProperties {
// 发送邮件的服务器IP和端口
private String mailServerHost;
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private List<String> toAddress;
// 抄送人地址
private List<String> ccAddress;
// 登陆邮件发送服务器的用户名和密码
private String userName;
private String password;
// 是否需要省份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
/**
*
*/
public Properties getProperties() {
Properties p = new Properties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
p.put("mail.smtp.auth", validate ? "true" : "false");
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String getFromAddress() {
String fromAdd = "";
if (fromAddress != null && fromAddress != "") {
fromAdd = fromAddress;
} else {
fromAdd = userName.split("@")[0]
+ "@"
+ mailServerHost.substring(mailServerHost.indexOf(".") + 1,
mailServerHost.length());
}
return fromAdd;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<String> getToAddress() {
return toAddress;
}
public void addToAddress(String toAddress) {
if (toAddress == null) {
this.toAddress = new ArrayList<String>();
}
this.toAddress.add(toAddress);
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
public List<String> getCcAddress() {
return ccAddress;
}
public void addCcAddress(String ccAddress) {
if (ccAddress == null) {
this.ccAddress = new ArrayList<String>();
}
this.ccAddress.add(ccAddress);
}
public void setToAddress(List<String> toAddress) {
this.toAddress = toAddress;
}
public void setCcAddress(List<String> ccAddress) {
this.ccAddress = ccAddress;
}
}
类3
<pre name="code" class="html">package com.main.comm.util;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.commons.mail.HtmlEmail;
public class MailUtil {
/**
* 以文本格式发送
*/
public synchronized static void sendTextMail(MailProperties mailPro) {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailPro.getProperties();
// 如果需要身份认证,则创建一个密码验证器
if (mailPro.isValidate()) {
authenticator = new MyAuthenticator(mailPro.getUserName(), mailPro
.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session
.getDefaultInstance(pro, authenticator);
try {
// 根据session创建一个邮件消息
MimeMessage mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailPro.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
List<String> to = mailPro.getToAddress();
List<String> cc = mailPro.getCcAddress();
mailMessage.setRecipients(Message.RecipientType.TO,
listToAddressArray(to));
if (cc != null) {
mailMessage.setRecipients(Message.RecipientType.CC,
listToAddressArray(cc));
// 设置邮件消息的主题
mailMessage.setSubject(mailPro.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// 设置邮件消息的主要内容
String mailContent = mailPro.getContent();
mailMessage.setText(mailContent);
// 发送邮件
Transport.send(mailMessage);
} else {
// 设置邮件消息的主题
mailMessage.setSubject(mailPro.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// 设置邮件消息的主要内容
String mailContent = mailPro.getContent();
mailMessage.setText(mailContent);
// 发送邮件
Transport.send(mailMessage);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static Address[] listToAddressArray(List<String> list) {
Address[] array = new Address[list.size()];
for (int i = 0; i < list.size(); i++) {
String str = String.valueOf(list.get(i));
Address address = null;
try {
address = new InternetAddress(str);
} catch (AddressException e) {
e.printStackTrace();
}
array[i] = address;
}
return array;
}
/**
* 以HTML发送
*/
public synchronized static void sendHtmlMail(MailProperties mailPro) {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailPro.getProperties();
// 如果需要身份认证,则创建一个密码验证器
if (mailPro.isValidate()) {
authenticator = new MyAuthenticator(mailPro.getUserName(), mailPro
.getPassword());
}
try {
// 创建邮件发送者地址
Address from = new InternetAddress(mailPro.getFromAddress());
// 根据session创建一个邮件消息
HtmlEmail htmlEmail = new HtmlEmail();
// 设置邮件消息的发送者
htmlEmail.setFrom(from.toString());
htmlEmail.setTLS(true);
htmlEmail.setHostName(mailPro.getMailServerHost());
htmlEmail.setAuthentication(mailPro.getUserName(), mailPro
.getPassword());
htmlEmail.setCharset("utf-8");
// 创建邮件的接收者地址,并设置到邮件消息中
List<String> to = mailPro.getToAddress();
List<String> cc = mailPro.getCcAddress();
for (int i = 0; i < to.size(); i++) {
htmlEmail.addTo(to.get(i).toString());
}
if (cc != null) {
// 有抄送人
for (int i = 0; i < to.size(); i++) {
htmlEmail.addCc(cc.get(i).toString());
}
// 设置邮件消息的主题
htmlEmail.setSubject(mailPro.getSubject());
// 设置邮件消息发送的时间
htmlEmail.setSentDate(new Date());
// 设置邮件消息的主要内容
String mailContent = mailPro.getContent();
htmlEmail.setHtmlMsg(mailContent);
// 发送邮件
htmlEmail.send();
} else {
// 没有抄送人
// 设置邮件消息的主题
htmlEmail.setSubject(mailPro.getSubject());
// 设置邮件消息发送的时间
htmlEmail.setSentDate(new Date());
// 设置邮件消息的主要内容
String mailContent = mailPro.getContent();
htmlEmail.setHtmlMsg(mailContent);
// 发送邮件
htmlEmail.send();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
类4
package com.main.comm.util;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class MyAuthenticator extends Authenticator {
<span style="white-space:pre"> </span>String userName=null;
String password=null;
public MyAuthenticator(){
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(userName, password);
}
}
</pre><pre class="html" name="code">//测试
public static void main(String[] args) {
MailFactory mailFactory = new MailFactory();
mailFactory.sendHtmlMail(subject, content, toAddress,fileName);//fileName带附件邮件
}