www.pudn.com > sendmail.rar > MailUtil.java
package com.sendmail;
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.mail.Message.*;
/**
*
* @author Administrator
*/
public class MailUtil {
private boolean isAuthenticate = false; /*SMTP服务器是否需要认证*/
//private String smtp = "smtp.sn.chinamobile.com"; /*邮件发送服务器*/
private String smtp = ""; /*邮件发送服务器*/
private String username = "";
private String password = "";
private String toAddr = ""; /*收信人*/
private String fromAddr = ""; /*发信人*/
private String cc = ""; /*抄送人*/
private String bcc = ""; /*暗送人*/
private String mailSubject = ""; /*邮件主题*/
private String mailBody = ""; /*邮件内容*/
//用于保存发送附件的文件名的集合
private Vector file = new Vector();
private Multipart mp;
/** Creates a new instance of MyMail */
public MailUtil() {
}
public MailUtil(String toAddr, String fromAddr, String mailSubject,
String mailBody,String smtp) {
this.toAddr = toAddr;
this.fromAddr = fromAddr;
this.mailSubject = mailSubject;
this.mailBody = mailBody;
this.smtp = smtp;
}
public MailUtil(String toAddr, String fromAddr, String cc, String bcc,
String mailSubject, String mailBody,String smtp) {
this.toAddr = toAddr;
this.fromAddr = fromAddr;
this.cc = cc;
this.bcc = bcc;
this.mailSubject = mailSubject;
this.mailBody = mailBody;
this.smtp = smtp;
}
public void attachFile(String fname) {
file.addElement(fname);
}
//该方法用于收集附件名
private void attachFiles() {
//利用枚举器方便的遍历集合
Enumeration efile = file.elements();
String filename = "";
//检查序列中是否还有更多的对象
while (efile.hasMoreElements()) {
try {
MimeBodyPart mbp = new MimeBodyPart();
//选择出每一个附件名
filename = efile.nextElement().toString();
//得到数据源
FileDataSource fds = new FileDataSource(filename);
//得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
mbp.setFileName(MimeUtility.encodeWord(fds.getName(), "GB2312", null));
//得到文件名同样至入BodyPart
mp.addBodyPart(mbp);
System.out.print("fds is " +fds);
}
catch (MessagingException me) {
System.out.println("警告:设置附件错误!filene:" + filename);
System.out.println(me.getMessage());
me.printStackTrace();
}
catch (UnsupportedEncodingException uee) {
System.out.println("警告:设置附件错误!filene:" + filename);
System.out.println(uee.getMessage());
uee.printStackTrace();
}
}
//删除集合中的所有元素
file.removeAllElements();
}
public String getToAddr() {
return toAddr;
}
public String getFromAddr() {
return fromAddr;
}
public String getCC() {
return cc;
}
public String getBCC() {
return bcc;
}
public String getMailSubject() {
return mailSubject;
}
public String getMailBody() {
return mailBody;
}
public String getSmtp() {
return smtp;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void setAuthenticate(boolean auth) {
this.isAuthenticate = auth;
}
public void setSmtp(String smtp) {
this.smtp = smtp;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String pwd) {
this.password = pwd;
}
public void setCC(String cc) {
this.cc = cc;
}
public void setBCC(String bcc) {
this.bcc = bcc;
}
public boolean send() {
//返回结果
boolean isSend = false;
//变量声明
Properties props;
Session mailSession;
MimeMessage mimeMsg;
//设置系统属性
props = System.getProperties();
/// props=new Properties();
props.put("mail.smtp.auth", isAuthenticate + "");
props.put("mail.smtp.host", smtp);
//获得邮件会话对象
if (isAuthenticate) {
Authenticator auth = new PopupAuthenticator(username, password);
mailSession = Session.getDefaultInstance(props, auth);
}
else {
mailSession = Session.getDefaultInstance(props, null);
}
//创建MIME邮件对象
mimeMsg = new MimeMessage(mailSession);
//设置发信人
try {
mimeMsg.setFrom(new InternetAddress(fromAddr));
}
catch (Exception ae) {
System.out.println("警告:设置发信人地址错误~~~");
}
//设置收信人
if (toAddr != null) {
try {
mimeMsg.setRecipients(javax.mail.Message.RecipientType.TO,
InternetAddress.parse(toAddr));
}
catch (Exception ae) {
System.out.println("错误:设置收信人地址错误~~~");
return false;
}
}
//设置抄送人
if (cc != null) {
try {
mimeMsg.setRecipients(RecipientType.CC, InternetAddress.parse(cc));
}
catch (Exception ae) {
System.out.println("警告:设置抄送人地址错误~~~");
}
}
//设置暗送人
if (bcc != null) {
try {
mimeMsg.setRecipients(RecipientType.BCC, InternetAddress.parse(bcc));
}
catch (Exception ae) {
System.out.println("警告:设置暗送人地址错误~~~");
}
}
Transport transport;
try {
//设置邮件主题
mimeMsg.setSubject(mailSubject, "GB2312");
//设置信件头的发送日期
mimeMsg.setSentDate(new Date());
//后面的BodyPart将加入到此处创建的Multipart中
MimeBodyPart bp = new MimeBodyPart();
bp.setContent(
"" +
mailBody, "text/html;charset=GB2312");
mp = new MimeMultipart();
mp.addBodyPart(bp);
//粘贴附件,Multipart加入到信件
attachFiles();
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
//发送邮件
transport = mailSession.getTransport("smtp");
//Transport.send(mimeMsg);
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
transport.close();
isSend = true;
}
catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
isSend = false;
}
finally {
}
return isSend;
}
}