package com.wzh.mail.timer;
import java.util.Timer;
public class TestTimer {
public static void main(String[] args){
/*Timer t = new Timer();
t.schedule(new MailTimerTask(), 0, 15*1000);*/
String title = "[彩票]彩民村买100送100,更有专家助您中500万!";
String content = "<table width='780' border='0' align='center' style=' margin:50px 0 27px 0' cellpadding='0' cellspacing='0'>"+
"<tr><td height='62' align='left' bgcolor='#FF6600'><img src='http://buy.caimincun.com/images/mail_3.jpg' width='356' height='44' alt='' style='padding:0 0 0 20px;' /></td><td align='right' valign='top' bgcolor='#FF6600'><img src='http://buy.caimincun.com/images/mail_5.jpg' alt='' width='258' height='33' border='0' usemap='#Map' style='padding-top:5px;' /></td></tr>"+
"<tr><td colspan='2' bgcolor='#FFCD24'>"+
"<table width='724' border='0' style=' margin:16px 0 27px 0' align='center' cellpadding='0' cellspacing='0'>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_10.jpg' width='724' height='70' alt='' /></td></tr>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_12.jpg' alt='' width='724' height='103' border='0' usemap='#Map2' /></td></tr>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_13.gif' width='724' height='97' alt='' /></td></tr>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_14.gif' alt='' width='724' height='159' border='0' usemap='#Map3' /></td></tr>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_15.gif' width='724' height='98' alt='' /></td></tr>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_16.gif' width='206' height='137' alt='' /><img src='http://buy.caimincun.com/images/mail_17.gif' alt='' width='518' height='137' border='0' usemap='#Map4' /></td></tr>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_18.gif' width='724' height='95' alt='' /></td></tr>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_19.gif' alt='' width='724' height='140' border='0' usemap='#Map5' /></td></tr>"+
"<tr><td><img src='http://buy.caimincun.com/images/mail_20.gif' alt='' width='724' height='63' border='0' usemap='#Map6' /></td></tr>"+
"</table></td></tr>"+
"<tr><td height='52' align='left' bgcolor='#FF6600'><img src='http://buy.caimincun.com/images/mail_22.gif' width='129' height='27' alt='' /></td><td align='center' bgcolor='#FF6600'><img src='http://buy.caimincun.com/images/mail_24.gif' width='192' height='27' alt='' /></td></tr>"+
"</table>"+
"<map name='Map' id='Map'><area shape='rect' coords='3,12,56,26' href='http://buy.caimincun.com/index.jsp' target='_blank' /><area shape='rect' coords='81,11,111,26' href='http://buy.caimincun.com/inc/admin_login.jsp ' target='_blank' /><area shape='rect' coords='135,10,189,26' href='http://buy.caimincun.com/inc/reg.jsp' target='_blank' /><area shape='rect' coords='202,11,254,26' href='http://buy.caimincun.com/about/about.htm ' target='_blank' /></map>"+
"<map name='Map2' id='Map2'><area shape='rect' coords='249,49,397,70' href='http://buy.caimincun.com/inc/tzz_active.htm ' target='_blank' /></map>"+
"<map name='Map3' id='Map3'><area shape='rect' coords='285,104,375,135' href='http://buy.caimincun.com/inc/reg.jsp ' target='_blank' /></map>"+
"<map name='Map4' id='Map4'><area shape='rect' coords='247,58,337,88' href='http://buy.caimincun.com/index.jsp ' target='_blank' /></map>"+
"<map name='Map5' id='Map5'><area shape='rect' coords='352,85,441,112' href='http://sms.zhcw.com/ ' target='_blank' /></map>"+
"<map name='Map6' id='Map6'><area shape='rect' coords='284,18,436,35' href='http://buy.caimincun.com/inc/tzz_active.htm ' target='_blank' /></map>";
/*"<table>" +
"<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_01.gif' border='0'/></a></tr>" +
"<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_02.gif' border='0'/></a></tr>"+
"<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_03.gif' border='0'/></a></tr>" +
"<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_04.gif' border='0'/></a></tr>"+
"<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_05.gif' border='0'/></a></tr>"+
"<tr><a href='http://buy.caimincun.com' target='blank'><img src='http://buy.caimincun.com/images/tzz_active_06.gif' border='0'/></a></tr>"+
"</table>";*/
String userName = "wmq534";
String inFilePath ="F:/volume1.xls";
String outFilePath="F:/test.txt";
Timer t = new Timer();
t.schedule(new MailTimerTask(title,content,userName,inFilePath,outFilePath), 0, 20*1000);
}
}
package com.wzh.mail.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class FileUtil {
Workbook workbook = null;
Sheet sheet = null;
/**
*<br>方法说明:读取excel文件一行数据
*<br>输入参数:int row指定的行数
*<br>返回类型:String〔〕结果数组
*/
public String[] readLine(int row){
try{
//获取数据表列数
int colnum = sheet.getColumns();
String[] rest = new String[colnum];
for(int i = 0; i < colnum; i++){
String sTemp = read(i,row);
if(sTemp!=null)
rest[i] = sTemp;
}
return rest;
}catch(Exception e){
System.out.println("readLine err:"+e);
workbook.close();
return null;
}
}
/**
*<br>方法说明:读取excel的指定单元数据
*<br>输入参数:
*<br>返回类型:
*/
public String read(int col, int row){
try{
//获得单元数据
Cell a2 = sheet.getCell(col,row);
String rest = a2.getContents();
return rest;
}catch(Exception e){
System.out.println("read err:"+e);
workbook.close();
return null;
}
}
public List readExcel(String url) {
List list = new ArrayList();
File filename = new File(url);
String parameter = "";
try {
workbook = Workbook.getWorkbook(filename);
sheet = workbook.getSheet(0);// 第1个sheet
Cell c = null;
int row = sheet.getRows();// 总行数
System.out.println("总行数"+row);
int col = sheet.getColumns();// 总列数
System.out.println("总列数 "+col);
for(int j=0;j<row;j++){
for (int i = 0; i < col; i++) {
parameter = sheet.getCell(i, j).getContents();
// System.out.println(parameter);
list.add(parameter);
}
}
System.out.println("--------------------------------------");
return list;
}catch(Exception e){
e.printStackTrace();
System.out.println("readLine err:"+e);
workbook.close();
return null;
}
}
/**
*<br>方法说明:写入文件操作
*<br>输入参数:
*<br>返回类型:
*/
public void write(String outFilePath,String username,String email){
try{
//创建一个可写入的excel文件对象
WritableWorkbook workbook = Workbook.createWorkbook(new File(outFilePath));
//使用第一张工作表,将其命名为“午餐记录”
WritableSheet sheet = workbook.createSheet("发送记录", 0);
//表头
Label label0 = new Label(0, 0, "发送时间");
sheet.addCell(label0);
Label label1 = new Label(1, 0, "用户名");
sheet.addCell(label1);
Label label2 = new Label(2, 0, "电子邮件");
sheet.addCell(label2);
Label label3 = new Label(3, 0, "备注");
sheet.addCell(label3);
//格式化日期
jxl.write.DateFormat df = new jxl.write.DateFormat("yyyy-dd-MM hh:mm:ss");
jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df);
jxl.write.DateTime labelDTF = new jxl.write.DateTime(0, 1, new java.util.Date(), wcfDF);
sheet.addCell(labelDTF);
//普通字符
Label labelCFC = new Label(1, 1, "riverwind");
sheet.addCell(labelCFC);
//格式化数字
jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
WritableCellFormat wcfN = new WritableCellFormat(nf);
jxl.write.Number labelNF = new jxl.write.Number(2, 1, 13.1415926, wcfN);
sheet.addCell(labelNF);
jxl.write.Number labelNNF = new jxl.write.Number(3, 1, 10.50001, wcfN);
sheet.addCell(labelNNF);
//关闭对象,释放资源
workbook.write();
workbook.close();
}catch(Exception e){
System.out.println(e);
}
}
public static void main(String[] args) {
/* List list = new ArrayList();
FileUtil t = new FileUtil();
list = t.readExcel("F:/volume1.xls");
for(Iterator it = (Iterator) list.iterator();it.hasNext();){
System.out.println("list="+it.next());
}
}*/
FileUtil t = new FileUtil();
// t.write("F:/test.xls", "wmq534", "wmq534@126.com");
t.writeFile("wmq534@126.com", "F:/test.txt");
}
@Override
public String toString() {
return super.toString();
}
public boolean writeFile(String con,String path){
File f=new File(path);
try{
FileWriter outFile=new FileWriter(f,true);
BufferedWriter bufferOut=new BufferedWriter(outFile);
bufferOut.write(con);
bufferOut.newLine();
bufferOut.flush();
bufferOut.close();
return true;
} catch(IOException e){
return false;
}
}
}
package com.wzh.mail.util;
import java.util.ArrayList;
import java.util.List;
import com.wzh.mail.base.MailSendParams;
public class SendMail {
List list = new ArrayList();
MailUtil mu = new MailUtil();
String outFileName ="";
MailSendParams msp = new MailSendParams();
public SendMail(){
}
public SendMail(String title,String content,String toUserName,String toEmail,String outFilePath){
msp.setMailTitle(title);
msp.setMailContent(content);
msp.setMailToUserName(toUserName);
msp.setMailTo(toEmail);
mu.InitMailServerCfg(msp);
mu.SetMailInfo(msp);
this.outFileName = outFilePath;
}
public List readFile(String InFileName,String OutFileName){
return list = mu.SendMailFromExcelFile2(InFileName,OutFileName);
}
public boolean sendMailOne(String email){
boolean ifSend = mu.SendMail(email);
if(ifSend){
FileUtil t = new FileUtil();
t.writeFile(email,outFileName);
}
return ifSend;
}
}
package com.wzh.mail.util;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.wzh.mail.base.IMailDaoImpl;
import com.wzh.mail.base.MailSendParams;
public class MailUtil extends IMailDaoImpl {
List mailList = new ArrayList();
/**
* 初始化邮件发送设置 参数见MailSendParams
*/
public void InitMailServerCfg(MailSendParams params){
// TODO Auto-generated method stub
this.smtpHost = "121.197.252.26";//smtp发送服务器的地址
this.smtpUserName = "admin@caifdfcun.com";//smtp发送邮箱的用户名
this.smtpUserPass = "********";//smtp发送邮箱的用户密码
this.smtpFrom = "admin@caimfdun.com";//smtp发送邮箱名
this.sendSplitTime = (long) 15;
}
/**
* 设置默认要发送邮件的信息 邮件标题 邮件内容 需要发送的用户称呼等
*/
public void SetMailInfo(MailSendParams params){
this.mailTitle = params.getMailTitle();
this.mailContent = params.getMailContent();
this.mailToUserName = params.getMailToUserName();
this.mailTo = params.getMailTo();//需要发送的邮箱
}
/**
* 从文件读出邮件list InFileName邮件list的输入文件, 格式txt
* OutFileName 邮件发送输出文件,记录发送文件的情况 格式 txt
* @param InFileName
* @param OutFileName
*/
public void SendMailFromTxtFile(String InFileName,String OutFileName){
}
/**
* 从文件读出邮件list InFileName邮件list的输入文件, 格式excel
* OutFileName 邮件发送输出文件,记录发送文件的情况 格式 txt
* @param InFileName
* @param OutFileName
*/
public List SendMailFromExcelFile2(String InFileName,String OutFileName){
FileUtil t = new FileUtil();
return mailList = t.readExcel(InFileName);
}
/**
* 按指定的邮件标题,内容发送邮件,可以提供指定个数的参数使用,
* 在邮件内容中使用特殊字符串代表间隔位,在此拼装邮件内容。
* @param mailParams
* @param params
*/
public void SendMailByParams(MailSendParams mailParams,String[] params){
String email = params[0];
String title = params[1];
String content = params[2];
String mailToUserName = params[3];
try {
Properties props = new Properties();
props.put("mail.smtp.host", this.smtpHost);
props.put("mail.smtp.connectiontimeout", "10000"); // 防止连接超时Timer一直等待
props.put("mail.smtp.timeout", "10000");
props.put("mail.smtp.auth", "true");
Session ssn = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(ssn);
InternetAddress fromAddress = new InternetAddress(this.smtpFrom);
message.setFrom(fromAddress);
InternetAddress toAddress = new InternetAddress(email);
message.addRecipient(Message.RecipientType.TO, toAddress);
message.setSubject(title);
message.setContent(content, "text/html;charset=gbk");
Transport transport;//当出现连接超时问题时,自动放弃当前连接,进行下一次的链接发送
{
transport = ssn.getTransport("smtp");
transport.connect(this.smtpHost, this.smtpUserName, this.smtpUserPass);
} catch (RuntimeException e) {
e.printStackTrace();
return false;
}
if(!transport.isConnected()){
System.out.println("连接超时"+email);
return false;
} transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
transport.close();
System.out.println("邮件成功发送!");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 别的模块调用传入list参数
* @param mailList
*/
public void SetMailList(List mailList){
this.mailList = mailList;
}
/**
* 从本地list发送邮件
*/
public void SendMails(){
}
public boolean SendMail(String email){
try {
Properties props = new Properties();
props.put("mail.smtp.host", this.smtpHost);
props.put("mail.smtp.auth", "true");
Session ssn = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(ssn);
InternetAddress fromAddress = new InternetAddress(this.smtpFrom);
message.setFrom(fromAddress);
InternetAddress toAddress = new InternetAddress(email);
message.addRecipient(Message.RecipientType.TO, toAddress);
message.setSubject(this.mailTitle);
message.setContent(this.mailContent, "text/html;charset=gbk");
Transport transport = ssn.getTransport("smtp");
transport.connect(this.smtpHost, this.smtpUserName, this.smtpUserPass);
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
transport.close();
System.out.println("success:"+email);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将一个邮件信息添加到发送list
* @param params
*/
public void AddMailList(MailSendParams params){
mailList.add(params);
}
/**
* 重置邮件列表
*/
public void initMailList(){
this.mailList = null;
}
/**
* 主函数 测试使用 包括所有的参数,可以命令行测试
*/
// public void man();
}
package com.wzh.mail.base;
import java.util.List;
public abstract class IMailDaoImpl implements IMailDao {
public static boolean ifEnd = true;//判定邮件发送任务是否已经结束
//发送服务器参数目前固定,等邮件发送功能完成后做设置功能,参数值最好能写入properties文件中
public static String smtpHost = null;//smtp发送服务器的地址
public static String smtpUserName = null;//smtp发送邮箱的用户名
public static String smtpUserPass = null;//smtp发送邮箱的用户密码
public static String smtpFrom = null;//smtp发送邮箱名
public static Long sendSplitTime = null;//发送时间间隔(为防止发送邮箱被当成垃圾邮箱)
public String mailTo;//需要发送的邮箱
public String mailTitle = null;//邮件标题
public String mailContent = null;//邮件内容
public String mailToUserName = null;//需要发送的用户称呼
public List mailList = null;//需要发送的邮箱list (考虑下list中存放MailSendParams对象,可能每个邮箱对应的称呼都不一样)
public void AddMailList(MailSendParams params) {
// TODO Auto-generated method stub
}
//新添加
public List SendMailFromExcelFile2(String InFileName,String OutFileName){
return null;
}
//新添加
public boolean SendMail(String email){
return false;
}
public void InitMailServerCfg(MailSendParams params) {
// TODO Auto-generated method stub
}
public void SendMailByParams(MailSendParams mailParams, String[] params) {
// TODO Auto-generated method stub
}
public void SendMailFromExcelFile(String InFileName, String OutFileName) {
// TODO Auto-generated method stub
}
public void SendMailFromTxtFile(String InFileName, String OutFileName) {
// TODO Auto-generated method stub
}
public void SendMails() {
// TODO Auto-generated method stub
}
public void SetMailInfo(MailSendParams params) {
// TODO Auto-generated method stub
}
public void SetMailList(List mailList) {
// TODO Auto-generated method stub
}
public void initMailList() {
// TODO Auto-generated method stub
}
}
package com.wzh.mail.base;
import java.util.List;
public interface IMailDao {
/**
* 初始化邮件发送设置 参数见MailSendParams
*/
public void InitMailServerCfg(MailSendParams params);
/**
* 设置默认要发送邮件的信息 邮件标题 邮件内容 需要发送的用户称呼等
*/
public void SetMailInfo(MailSendParams params);
/**
* 从文件读出邮件list InFileName邮件list的输入文件, 格式txt
* OutFileName 邮件发送输出文件,记录发送文件的情况 格式 txt
* @param InFileName
* @param OutFileName
*/
public void SendMailFromTxtFile(String InFileName,String OutFileName);
/**
* 从文件读出邮件list InFileName邮件list的输入文件, 格式excel
* OutFileName 邮件发送输出文件,记录发送文件的情况 格式 txt
* @param InFileName
* @param OutFileName
*/
public void SendMailFromExcelFile(String InFileName,String OutFileName);
/**
* 按指定的邮件标题,内容发送邮件,可以提供指定个数的参数使用,
* 在邮件内容中使用特殊字符串代表间隔位,在此拼装邮件内容。
* @param mailParams
* @param params
*/
public void SendMailByParams(MailSendParams mailParams,String[] params);
/**
* 别的模块调用传入list参数
* @param mailList
*/
public void SetMailList(List mailList);
/**
* 从本地list发送邮件
*/
public void SendMails();
/**
* 将一个邮件信息添加到发送list
* @param params
*/
public void AddMailList(MailSendParams params);
/**
* 重置邮件列表
*/
public void initMailList();
public boolean SendMail(String email);
public List SendMailFromExcelFile2(String InFileName,String OutFileName);
/**
* 主函数 测试使用 包括所有的参数,可以命令行测试
*/
// public void man();
}
package com.wzh.mail.base;
public class MailSendParams {
private String mailTitle;//邮件标题
private String mailContent;//邮件内容
private String mailTo;//需要发送的邮箱
private String mailToUserName;//需要发送的用户称呼
public String getMailTitle() {
return mailTitle;
}
public void setMailTitle(String mailTitle) {
this.mailTitle = mailTitle;
}
public String getMailContent() {
return mailContent;
}
public void setMailContent(String mailContent) {
this.mailContent = mailContent;
}
public String getMailTo() {
return mailTo;
}
public void setMailTo(String mailTo) {
this.mailTo = mailTo;
}
public String getMailToUserName() {
return mailToUserName;
}
public void setMailToUserName(String mailToUserName) {
this.mailToUserName = mailToUserName;
}
}
转自http://hi.baidu.com/wmqxyh/blog/item/ce638bb3a251e35e0823026f.html