package com.vutc.common.view;
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.MessagingException;
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;
/**
* Title: 使用JavaMail发送邮件
* Description: 使用JavaMail包发送电子邮件,可发送多附件。
* Copyright: Copyright (c) 2008
* Filename: JavaMail.java
*
* @version 1.0
*/
public class JavaMail {
String to = ""; //收件人
String from = ""; //发件人
String host = ""; //SMTP主机
String username = ""; //发件人邮箱用户名
String password = ""; //发件人邮箱密码
String filename = ""; //附件文件名
String subject = ""; //邮件主题
String content = ""; //邮件正文
Vector<String> file = new Vector<String>(); //附件文件集合
/**
* 默认构造器
*/
public JavaMail() {
}
/**
* 构造器,提供直接的参数传入
*/
public JavaMail(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;
}
/**
* 往附件组合中添加附件
*/
public void attachfile(String fname) {
file.addElement(fname);
}
/**
* 发送邮件
* boolean 成功为true,反之为false
*/
public boolean sendMail() {
//构造mail session
Properties props = System.getProperties();
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 并设定基本的值
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
Multipart mp = new MimeMultipart();
//向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setText(content);
//向MimeMessage添加(Multipart代表正文)
mp.addBodyPart(mbpContent);
//向Multipart添加附件
Enumeration<String> 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());
//向MimeMessage添加(Multipart代表附件)
mp.addBodyPart(mbpFile);
}
file.removeAllElements();
//向Multipart添加MimeMessage
msg.setContent(mp);
msg.setSentDate(new Date());
//发送邮件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex = mex.getNextException()) != null) {
ex.printStackTrace();
}
return false;
}
return true;
}
/**
* 主方法,用于测试
*/
public static void main(String[] args) {
JavaMail sendmail = new JavaMail();
sendmail.setHost("smtp.163.com");
sendmail.setUserName("wiiln");
sendmail.setPassWord("123456");
sendmail.setTo("wiiln@yeah.net");
sendmail.setFrom("wiiln@163.com");
sendmail.setSubject("主题测试!");
sendmail.setContent("内容测试!");
sendmail.attachfile("c:/files/a.txt");
sendmail.attachfile("c:/files/bang.rar");
sendmail.sendMail();
}
/**
* 把主题转换为中文
*/
private String transferChinese(String strText) {
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),"GB2312"), "GB2312", "B");
} catch (Exception e) {
e.printStackTrace();
}
return strText;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public Vector<String> getFile() {
return file;
}
public void setFile(Vector<String> file) {
this.file = file;
}
public String getTo() {
return to;
}
public String getFrom() {
return from;
}
public String getHost() {
return host;
}
public String getSubject() {
return subject;
}
public String getContent() {
return content;
}
public void setTo(String to) {
this.to = to;
}
public void setFrom(String from) {
this.from = from;
}
public void setHost(String host) {
this.host = host;
}
public void setUserName(String usn) {
this.username = usn;
}
public void setPassWord(String pwd) {
this.password = pwd;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setContent(String content) {
this.content = content;
}
}
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.MessagingException;
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;
/**
* Title: 使用JavaMail发送邮件
* Description: 使用JavaMail包发送电子邮件,可发送多附件。
* Copyright: Copyright (c) 2008
* Filename: JavaMail.java
*
* @version 1.0
*/
public class JavaMail {
String to = ""; //收件人
String from = ""; //发件人
String host = ""; //SMTP主机
String username = ""; //发件人邮箱用户名
String password = ""; //发件人邮箱密码
String filename = ""; //附件文件名
String subject = ""; //邮件主题
String content = ""; //邮件正文
Vector<String> file = new Vector<String>(); //附件文件集合
/**
* 默认构造器
*/
public JavaMail() {
}
/**
* 构造器,提供直接的参数传入
*/
public JavaMail(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;
}
/**
* 往附件组合中添加附件
*/
public void attachfile(String fname) {
file.addElement(fname);
}
/**
* 发送邮件
* boolean 成功为true,反之为false
*/
public boolean sendMail() {
//构造mail session
Properties props = System.getProperties();
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 并设定基本的值
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
Multipart mp = new MimeMultipart();
//向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
mbpContent.setText(content);
//向MimeMessage添加(Multipart代表正文)
mp.addBodyPart(mbpContent);
//向Multipart添加附件
Enumeration<String> 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());
//向MimeMessage添加(Multipart代表附件)
mp.addBodyPart(mbpFile);
}
file.removeAllElements();
//向Multipart添加MimeMessage
msg.setContent(mp);
msg.setSentDate(new Date());
//发送邮件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex = mex.getNextException()) != null) {
ex.printStackTrace();
}
return false;
}
return true;
}
/**
* 主方法,用于测试
*/
public static void main(String[] args) {
JavaMail sendmail = new JavaMail();
sendmail.setHost("smtp.163.com");
sendmail.setUserName("wiiln");
sendmail.setPassWord("123456");
sendmail.setTo("wiiln@yeah.net");
sendmail.setFrom("wiiln@163.com");
sendmail.setSubject("主题测试!");
sendmail.setContent("内容测试!");
sendmail.attachfile("c:/files/a.txt");
sendmail.attachfile("c:/files/bang.rar");
sendmail.sendMail();
}
/**
* 把主题转换为中文
*/
private String transferChinese(String strText) {
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),"GB2312"), "GB2312", "B");
} catch (Exception e) {
e.printStackTrace();
}
return strText;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public Vector<String> getFile() {
return file;
}
public void setFile(Vector<String> file) {
this.file = file;
}
public String getTo() {
return to;
}
public String getFrom() {
return from;
}
public String getHost() {
return host;
}
public String getSubject() {
return subject;
}
public String getContent() {
return content;
}
public void setTo(String to) {
this.to = to;
}
public void setFrom(String from) {
this.from = from;
}
public void setHost(String host) {
this.host = host;
}
public void setUserName(String usn) {
this.username = usn;
}
public void setPassWord(String pwd) {
this.password = pwd;
}
public void setSubject(String subject) {
this.subject = subject;
}
public void setContent(String content) {
this.content = content;
}
}