package com.eastpro.batch.biz;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.security.spec.X509EncodedKeySpec;
public class SendMail {
private MimeMessage mimeMsg; //MIME mail object
private Session session;
private Properties props; //system property
private boolean needAuth = false;
private String username = "";
private String password = "";
private Multipart mp; //Multipart ,存放信件 title/内容/附件等
public SendMail(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
}
/**
* @param hostName String
*/
public void setSmtpHost(String hostName) {
System.out.println("sytem属性:mail.smtp.host = " + hostName);
if (props == null) {
props = System.getProperties();
}
props.put("mail.smtp.host", hostName); //SMTP主机
}
/**
* @return boolean
*/
public boolean createMimeMessage() {
try {
System.out.println("session begin-------");
session = Session.getInstance(props, null);
}
catch (Exception e) {
System.err.println("Session.getInstance faild!" + e);
return false;
}
System.out.println("MimeMessage begin-------!");
try {
mimeMsg = new MimeMessage(session);
mp = new MimeMultipart();
return true;
}
catch (Exception e) {
System.err.println("MimeMessage fiald!" + e);
return false;
}
}
/**
* @param need boolean
*/
public void setNeedAuth(boolean need) {
System.out.println(":mail.smtp.auth = " + need);
if (props == null) {
props = System.getProperties();
}
if (need) {
props.put("mail.smtp.auth", "true");
}
else {
props.put("mail.smtp.auth", "false");
}
}
/**
* @param name String
* @param pass String
*/
public void setNamePass(String name, String pass) {
username = name;
password = pass;
}
/**
* @param mailSubject String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
System.out.println("set title begin-----!");
try {
if (!mailSubject.equals("") && mailSubject != null) {
mimeMsg.setSubject(mailSubject);
}
return true;
}
catch (Exception e) {
System.err.println("set title faild!");
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean addFileAffix(String filename) {
System.out.println("增加附件----:" + filename);
if (filename.equals("") || filename == null) {
return false;
}
String file[];
file = filename.split(";");
System.err.println("========" + file.length);
try {
for (int i = 0; i < file.length; i++) {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(file[i]);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
}
return true;
}
catch (Exception e) {
System.err.println("增加附件:" + filename + "--faild!" + e);
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean setFrom(String from) {
System.out.println("set Mail From!");
try {
mimeMsg.setFrom(new InternetAddress(from));
return true;
}
catch (Exception e) {
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean setTo(String to) {
if (to == null) {
return false;
}
try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
return true;
}
catch (Exception e) {
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean setCopyTo(String copyto) {
if (copyto.equals("") || copyto == null) {
return false;
}
try {
String copy[];
int i = 0;
copy = copyto.split(";");
for(i=0; i<copy.length; i++){
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copy[i]));
}
return true;
}
catch (Exception e) {
return false;
}
}
/**
* @param mailBody String
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>" +
mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp);
return true;
}
catch (Exception e) {
System.err.println("Set content Fiald!" + e);
return false;
}
}
/**
*送html
* @param htmlPath
* @return
*/
public boolean setHtml(String htmlPath) {
try {
if (!htmlPath.equals("") && htmlPath != null) {
BodyPart mbp = new MimeBodyPart();
DataSource ds = new FileDataSource(htmlPath);
mbp.setDataHandler(new DataHandler(ds));
mbp.setHeader("Content-ID", "meme");
mp.addBodyPart(mbp);
}
return true;
}
catch (Exception e) {
System.err.println("set html Fiald!" + e);
return false;
}
}
/**
* @param name String
* @param pass String
*/
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在 Send Mail ....");
Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect( (String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
transport.sendMessage(mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.CC));
System.out.println("Mail Send 成功!");
transport.close();
return true;
}
catch (Exception e) {
System.err.println("Mail Send Fiald!" + e);
return false;
}
}
}