|
|
要求:定时发信功能
细节:只允许装jdk
方案:定时用批处理来完成,发信功能由javamail 实现
步骤:1、定时 批处理脚本,以下是每5秒钟运行一次,运行10000000次 ,java 文件新建在 c 盘根目录下
ping -n 5 127.1>nul @echo off for /l %%x in (1,1,10000000) do ( echo %%x cd\javac SendMail.javajava SendMailping -n 5 127.1>nul ) pause
2、java 实现发信功能
首先,CLASSPATH 配置第三方jar包,如 :%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;D:\java\jdk1.5.0_12\lib\thirdJar\mail.jar;D:\java\jdk1.5.0_12\lib\thirdJar\activation.jar;D:\java\jdk1.5.0_12\lib\thirdJar\mailapi.jar;
其次,编译文件,执行文件 SendMail.java
import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Properties;import javax.activation.DataHandler;import javax.activation.DataSource;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.Multipart;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;public class SendMail { public static void main(String[] args) { System.out.println("------start-----"); SendMail sm = new SendMail(); String from = "xingyu@bolasoft.com"; String content = "<html><body>いつも大変、お世話になっております。<br>本日発行したアカウントをご連絡いたします。<br> よろしくお願いいたします。<br>==============================<br>株式会社シルクロード<br> 〒135‐0001 江東区毛利1‐12‐10‐1102<br>電話:03‐5624‐5805<br>Fax :03‐5624‐5807<br> ==============================<br>"; String to = "anxingyu_1984@126.com"; String password = "×××"; String username = "xingyu@bolasoft.com"; String subject = "発行通知"; String host = "smtp.bolasoft.com"; try {// 读文件,得到发件人和收件人 File f=new File("C:/MBSTimingJobs/property.txt"); InputStream is = new FileInputStream(f); List<Object> list = sm.readToBuffer(is); is.close(); from=list.get(0).toString(); username=list.get(0).toString(); password=list.get(1).toString(); to=list.get(2).toString(); System.out.println(host); System.out.println(from); System.out.println(to); System.out.println(username); System.out.println(password); sm.smail(host, from, to, username, password, subject, content); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("------end-----"); } public List<Object> readToBuffer( InputStream is) throws IOException { List<Object> list = new ArrayList<Object>(); String line; // 用来保存每行读取的内容 BufferedReader reader = new BufferedReader(new InputStreamReader(is)); line = reader.readLine(); // 读取第一行 while (line != null) { // 如果 line 为空说明读完了 list.add(line); line = reader.readLine(); // 读取下一行 } return list; } public void smail(String host, String from, String to, String username, String password, String subject, String content) throws Exception { Properties props = new Properties(); // Setup mail server props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); // Get session Session session = Session.getDefaultInstance(props); // watch the mail commands go by to the mail server session.setDebug(true); // Define message MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); // create the message part MimeBodyPart messageBodyPart = new MimeBodyPart(); String fileAttachment = "C:/MBSTimingJobs/DayStatistc/"+dateFormat()+".csv"; // fill message Multipart multipart = new MimeMultipart(); messageBodyPart.setContent(content, "text/html;charset=GBK"); multipart.addBodyPart(messageBodyPart); // Part two is attachment messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(fileAttachment); messageBodyPart.setDataHandler(new DataHandler(source)); @SuppressWarnings("unused") String fileName = new String(fileAttachment.getBytes("ISO-8859-1"),"GBK"); String[] arrayStr = fileAttachment.split("/"); String file = arrayStr[arrayStr.length - 1]; System.out.println("file = " + file); messageBodyPart.setFileName(file); multipart.addBodyPart(messageBodyPart); // Put parts in message message.setContent(multipart); // Send message message.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, username, password); transport.sendMessage(message, message.getAllRecipients()); transport.close(); } private static String dateFormat(){ SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd"); return sdf.format(new Date()); }}
注意:jar 所在位置,根据CLASSPATH可看出,发送邮件的源码中附件的位置 C:/MBSTimingJobs/DayStatistc/ ,附件名称是每天动态得到
ok! |
|