www.pudn.com > sendmail.rar > SendMail.java
package com.sendmail;
import java.io.File;
import java.io.InputStream;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class SendMail {
public static Logger logger = Logger.getLogger(SendMail.class);
public static String FILE_PATH = "D:\\tmp\\";
public static String PROGRAM_FILE_PATH = "D:\\javawork\\sendmail\\";
//public static String PROGRAM_FILE_PATH = "C:\\Program Files\\sendfile\\sendFileMailNew\\";
public static int SLEEPTIME = 10 * 1000; //刷新时间10秒一次
public static int SLEEPTIME2 = 30 * 1000; //刷新时间30秒一次
private static String log4jFile = "log4j.inf";
public SendMail() {
}
public static void main(String[] args) throws Exception {
PropertyConfigurator.configure(log4jFile);
logger.info(new java.util.Date() + "start try to send today report.");
XMLReader xMLReader = new XMLReader();
xMLReader.loadXMLFile(SendMail.PROGRAM_FILE_PATH+XMLReader.XML_FILE_NAME);
String mailSubject = xMLReader.getSubjectFields();
String mailBody = MailBodyReader.fileReader();
DateUtil du = new DateUtil();
String today = du.getToday("yyyy.MM.dd HH:mm:ss");
mailBody += today;
String username = xMLReader.getUserNameFields(); //用户名
String password = xMLReader.getPasswordFields(); //登陆密码
String smtp = xMLReader.getSMTPFields(); //邮件服务器地址
String fromAddr = xMLReader.getFromFields(); //发送用户邮件地址
String toAddr[] = xMLReader.getToFieldArray();
String[] reportList = xMLReader.getReportNameArray();
SendMail sm = new SendMail();
String txtFileName = ReportController.getReportFileName();
while (true) {
boolean canSend = false;
try {
logger.info(new java.util.Date() + " try to get today file.");
ReportController rc = new ReportController();
//ReportController.main(args);
rc.doJob(txtFileName);
canSend = sm.ifCanSendMail(txtFileName);
if (canSend) {
logger.info(new java.util.Date() + " start send mail.");
try{
sm.doSendMail(mailSubject, mailBody, username, password,
smtp, fromAddr, toAddr, reportList, FILE_PATH,txtFileName);
}catch(Exception ex){
//如果发送异常,比如连不上邮箱等,sleep 半分钟
ex.printStackTrace();
Thread.sleep(SLEEPTIME2);
//再试一次
try{
sm.doSendMail(mailSubject, mailBody, username, password,
smtp, fromAddr, toAddr, reportList, FILE_PATH,txtFileName);
}catch(Exception ex2){
//如果发送异常,比如连不上邮箱等,sleep 半分钟
ex2.printStackTrace();
Thread.sleep(SLEEPTIME2);
//再试一次
}
}
break;
}
logger.info(new java.util.Date()
+ " attached file hasn't exist.sleep 10 second.");
Thread.sleep(SLEEPTIME);
} catch (Exception e) {
System.out.println(new java.util.Date()
+ " throw exception 1: " + e.getMessage());
}
}
//delete file
sm.delAttachedFile(txtFileName);
System.exit(-1);
}
public boolean doSendMail(String mailSubject, String mailBody,
String username, String password, String smtp, String fromAddr,
String[] toAddr, String[] reportList, String localPath, String txtFileName)
throws Exception {
//MailBodyReader mailBodyReader = new MailBodyReader();
// String mailSubject = xMLReader.getSubjectFields();
// String mailBody = MailBodyReader.fileReader();
// mailBody += DateUtil.formatDate(DateUtil.getToday(), 1);
//
// String username = xMLReader.getUserNameFields(); //用户名
// String password = xMLReader.getPasswordFields(); //登陆密码
// String smtp = xMLReader.getSMTPFields(); //邮件服务器地址
// String fromAddr = xMLReader.getFromFields(); //发送用户邮件地址
//
// String toAddr[] = xMLReader.getToFieldArray();
// String [] reportList = xMLReader.getReportNameArray();
for (int i = 0; i < toAddr.length; i++) {
MailUtil mail = new MailUtil(toAddr[i], fromAddr, mailSubject,
mailBody, smtp);
//如果SMTP服务器需要认证的话,下面三个属性必须设置
mail.setAuthenticate(true);
mail.setSmtp(smtp);
mail.setUsername(username);
mail.setPassword(password);
mail.attachFile(localPath + ReportController.getZipFileName(txtFileName));
System.out.println("From\t:" + mail.getFromAddr());
System.out.println("To\t:" + mail.getToAddr());
System.out.println("cc\t:"
+ ((mail.getCC().equals("")) ? "无" : mail.getCC()));
System.out.println("bcc\t:"
+ ((mail.getBCC().equals("")) ? "无" : mail.getBCC()));
System.out.println("Sbuject\t:" + mail.getMailSubject());
System.out.println("Body\t:" + mail.getMailBody());
System.out.print("sending mail now ...");
if (mail.send()) {
System.out.println("Mail send success!");
} else {
System.out.println("Mail send failure!");
}
}
return true;
}
private boolean ifCanSendMail(String fileName) throws Exception {
//String fileName = ReportController.getReportFileName("zip");
File myFs = new File(FILE_PATH + fileName);
return myFs.exists();
}
private boolean delAttachedFile(String fileName){
boolean delAll = false;
//String fileName = ReportController.getReportFileName("txt");
File myFs = new File(FILE_PATH + fileName);
delAll = myFs.delete();
fileName = ReportController.getZipFileName(fileName);
myFs = new File(FILE_PATH + fileName);
delAll = myFs.delete();
return delAll;
}
}