package com.king.mail;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
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 SendMailUtil {
private String to;
private String from;
private String username;
private String password;
private String smtpServer;
private String filename;
private String subject;
private String content;
Vector file = new Vector();
public SendMailUtil() {
}
public SendMailUtil(String to, String from, String smtpServer,
String username, String password, String subject, String content) {// 构造器
this.to = to;
this.from = from;
this.smtpServer = smtpServer;
this.username = username;
this.password = password;
this.subject = subject;
this.content = content;
}
public String transferChinese(String strText) {// 内容格式转码
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),
"gb2312"), "gb2312", "B");
} catch (Exception err) {
err.printStackTrace();
}
return strText;
}
public void attachfile(String fname) {
file.addElement(fname);
}
public boolean send() {
Properties props = System.getProperties();
props.put("mail.smtp.host", smtpServer);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);// 用户登录stmp服务器时候验证用户名和密码。
}
});
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
subject = transferChinese(subject);
msg.setSubject(subject);
Multipart mp = new MimeMultipart();
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setText(content);
mp.addBodyPart(mbpContent);
Enumeration efile = file.elements();
while (efile.hasMoreElements()) {
MimeBodyPart mbpFile = new MimeBodyPart();
filename = efile.nextElement().toString();
FileDataSource fds = new FileDataSource(filename);
mbpFile.setDataHandler(new DataHandler(fds));
mbpFile.setFileName(fds.getName());
mp.addBodyPart(mbpFile);
}
file.removeAllElements();
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
} catch (Exception err) {
err.printStackTrace();
return false;
}
return true;
}
public static void main(String[] args) {
try {
SendMailUtil sm = new SendMailUtil();
sm.setSmtpServer("smtp.sina.com"); // 邮件协议
sm.setUsername("kingsever@sina.com");// 发件人
sm.setPassword("6557043");// 发件人密码
sm.setTo("kingsever@sina.com");// 收件人地址
sm.setFrom("kingsever@sina.com");// 发件人地址
sm.setSubject("测试附件能不能上传");// 邮件主题
sm.setContent("http://localhost:8080/sms/datasyn.sms?sign=go");
// sm.attachfile(""); 发送附件
sm.send(); // 发送
System.out.println("send success...");
} catch (Exception err) {
err.printStackTrace();
}
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Vector getFile() {
return file;
}
public void setFile(Vector file) {
this.file = file;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSmtpServer() {
return smtpServer;
}
public void setSmtpServer(String smtpServer) {
this.smtpServer = smtpServer;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}