|
package com.ghb.www.util;
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
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;
import javax.mail.internet.MimeUtility;
public class EmailSender {
private static final String charset = "GBK";
private static final String defaultMimetype = "text/plain";
public static void main(String[] args) throws Exception {
EmailSender.send(new String[] { “收件人的邮箱”},
"测试邮件发送!", "<a href='http://www.baidu.com'>呵呵</a>", null, "text/HTML");
}
/**
* 发送邮件
* @param receiver 收件人
* @param subject 标题
* @param mailContent 邮件内容
* @param mimetype 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String receiver, String subject,
String mailContent, String mimetype) {
send(new String[] { receiver }, subject, mailContent, mimetype);
}
/**
* 发送邮件
* @param receivers 收件人
* @param subject 标题
* @param mailContent 邮件内容
* @param mimetype 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String[] receivers, String subject,
String mailContent, String mimetype) {
send(receivers, subject, mailContent, null, mimetype);
}
/**
* 发送邮件
* @param receivers 收件人
* @param subject 标题
* @param mailContent 邮件内容
* @param attachements 附件
* @param mimetype 内容类型 默认为text/plain,如果要发送HTML内容,应设置为text/html
*/
public static void send(String[] receivers, String subject,
String mailContent, File[] attachements, String mimetype) {
Properties props = new Properties();
/*以下是常用不同网站的pop和stmp服务器地址:
网站 接收服务器 外发服务器
网易@163.com邮箱 pop.163.com; smtp.163.com
网易@yeah.net邮箱 pop.yeah.net; smtp.yeah.net
网易@netease.com邮箱 pop.netease.com; smtp.netease.com
网易@126.com邮箱: pop3.126.COM SMTP.126.COM
搜狐@sohu.com: pop3.sohu.com; smtp.sohu.com
信网@eyou.com: pop3.eyou.com; mx.eyou.com
新飞网@tom.com: pop.tom.com; smtp.tom.com
亿唐@etang.com: pop.free.etang.com smtp.free.etang.com
21世纪@21cn.com: pop.21cn.com; smtp.21cn.com */
props.put("mail.smtp.host", "smtp.163.com");//Smtp服务器地址
props.put("mail.smtp.auth", "true");//需要校验
Session session = Session.getDefaultInstance(props,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("发件人邮箱",
"发件人邮箱密码");//登录用户名/密码
}
});
session.setDebug(true);
try {
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress("发件人邮箱"));//发件人邮件
InternetAddress[] toAddress = new InternetAddress[receivers.length];
for (int i = 0; i < receivers.length; i++) {
toAddress = new InternetAddress(receivers);
}
mimeMessage.setRecipients(Message.RecipientType.TO, toAddress);//收件人邮件
mimeMessage.setSubject(subject, charset);
Multipart multipart = new MimeMultipart();
//正文
MimeBodyPart body = new MimeBodyPart();
// body.setText(message, charset);不支持html
body.setContent(mailContent, (mimetype != null
&& !"".equals(mimetype) ? mimetype : defaultMimetype)
+ ";charset=" + charset);
multipart.addBodyPart(body);//发件内容
//附件
if (attachements != null) {
for (File attachement : attachements) {
MimeBodyPart attache = new MimeBodyPart();
//ByteArrayDataSource bads = new ByteArrayDataSource(byte[],"application/x-any");
attache.setDataHandler(new DataHandler(new FileDataSource(
attachement)));
String fileName = getLastName(attachement.getName());
attache.setFileName(MimeUtility.encodeText(fileName,
charset, null));
multipart.addBodyPart(attache);
}
}
mimeMessage.setContent(multipart);
// SimpleDateFormat formcat = new SimpleDateFormat("yyyy-MM-dd");
mimeMessage.setSentDate(new Date());//formcat.parse("2010-5-23")
Transport.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
private static String getLastName(String fileName) {
int pos = fileName.lastIndexOf("\\");
if (pos > -1) {
fileName = fileName.substring(pos + 1);
}
pos = fileName.lastIndexOf("/");
if (pos > -1) {
fileName = fileName.substring(pos + 1);
}
return fileName;
}
} |
|