導航:首頁 > 編程語言 > java定時郵件

java定時郵件

發布時間:2022-08-02 04:49:08

① 怎樣用javaMail實現郵件的自動回復和定時發送

1 import org.quartz.Job;
2 import org.quartz.JobExecutionContext;
3 import org.quartz.JobExecutionException;
4 import java.util.Calendar;
5 import java.text.SimpleDateFormat;
6 import java.util.Date;
7 import java.lang.InterruptedException;
8 import java.util.Random;
9 import java.util.Properties;
10 import javax.mail.*;
11 import javax.mail.internet.*;
12 public class MailJob implements Job
13 {
14 public void execute(JobExecutionContext context)
15 throws JobExecutionException {
16 //收件人,標題和文本內容
17 String to = "#######@126.com";//填寫你要發給誰
18 String title = createTitle();
19 String text = createText();
20 //設置屬性
21 Properties props = new Properties();
22 //QQ郵箱發件的伺服器和埠
23 props.put("mail.smtp.host", "smtp.qq.com");
24 props.put("mail.smtp.socketFactory.port", "465");
25 props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
26 props.put("mail.smtp.auth", "true");
27 props.put("mail.smtp.port", "25");
28 Session session = Session.getDefaultInstance(props,
29 new javax.mail.Authenticator() {
30 protected PasswordAuthentication getPasswordAuthentication() {
31 //填寫你的qq郵箱用戶名和密碼
32 return new PasswordAuthentication("*******@qq.com", "###***%%%");
33 }
34 });
35 MimeMessage message = new MimeMessage(session);
36 //這里用flag來標記是否發件成功(有時候會連不上伺服器),
37 //如果沒有,繼續發送,直到發送成功為止。
38 int flag = 0;
39 {
40 try {
41 //設置發件人,收件人,主題和文本內容,並發送
42 message.setFrom(new InternetAddress("*******@qq.com"));//填寫你自己的qq郵箱,和上面相同
43 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
44 message.setSubject(title);
45 message.setText(text);
46 System.out.println("Preparing sending mail...");
47 System.out.println(text);
48 Transport.send(message);
49 flag = 1;
50 System.out.println("message sent successfully");
51 } catch(Exception e) {
52 flag = 0;
53 }
54 } while(flag == 0);
55 }
56 //下面的兩個方法,用來隨機組合標題和文本內容。文本內容由四部分隨機組合。
57 //產生標題
58 public String createTitle() {
59 String[] titles = {"love", "I love you", "Miss you", "My baby"};
60 Random randT = new Random(System.currentTimeMillis());
61 String title = titles[randT.nextInt(titles.length)];
62 return title;
63 }
64 //產生文本內容,文本內容由四部分隨機組合得到。
65 public String createText() {
66 //名字純屬虛構,如有雷同(肯定會有),純屬巧合。
67 String[] parts1 = {"曉靜,你好。", "曉靜,你還好嗎?", "曉靜,你那邊天氣怎麼樣?"};
68 String[] parts2 = {
69 "距離上次見面,我感覺已經好長時間了。",
70 "流去的時間磨不去我對你的愛。",
71 "我仍然記得你在天安門前的那一抹笑容。"
72 };
73 String[] parts3 = {"今天,我大膽地追求你。",
74 "我不怕大膽地對你說,我愛你。",
75 "此刻,月亮代表我的心。"
76 };
77 String[] parts4 = {
78 "未來,我的心依舊屬於你。",
79 "好想在未來陪你一起慢慢變老,當然在我心中你不會老。"
80 };
81 Random randT = new Random(System.currentTimeMillis());
82 String text = parts1[randT.nextInt(parts1.length)]
83 + parts2[randT.nextInt(parts2.length)]
84 + parts3[randT.nextInt(parts3.length)]
85 + parts4[randT.nextInt(parts4.length)];
86 return text;
87 }
88
89 }
復制代碼
觸發器的代碼:
復制代碼
1 import org.quartz.CronScheleBuilder;
2 import org.quartz.JobBuilder;
3 import org.quartz.JobDetail;
4 import org.quartz.Scheler;
5 import org.quartz.Trigger;
6 import org.quartz.TriggerBuilder;
7 import org.quartz.impl.StdSchelerFactory;
8 import java.util.Random;
9 public class CronTriggerExample
10 {
11 public static void main( String[] args ) throws Exception
12 {
13 //創建工作對象
14 JobDetail job = JobBuilder.newJob(MailJob.class)
15 .withIdentity("mmyJobName", "group1").build();
16 //為了立即測試,可以使用下面的代碼,每隔5秒鍾執行一次
17 //int secDelta = 5;
18 //Trigger trigger = TriggerBuilder
19 // .newTrigger()
20 // .withIdentity("mmyTriggerName", "group1")
21 // .withSchele(
22 // CronScheleBuilder.cronSchele("0/" + secDelta + " * * * * ?"))
23 // .build();
24 //在每天早上的9點多(不超過3分鍾)執行
25 Random rand = new Random(System.currentTimeMillis());
26 int secDelta = rand.nextInt(60 * 3);
27 //創建觸發器對象
28 Trigger trigger = TriggerBuilder
29 .newTrigger()
30 .withIdentity("mmyTriggerName", "group1")
31 .withSchele(
32 CronScheleBuilder.cronSchele(secDelta + " 0 9 ? * SUN-SAT"))
33 .build();
34
35 Scheler scheler = new StdSchelerFactory().getScheler();
36 scheler.start();
37 //將觸發器與工作關聯起來
38 scheler.scheleJob(job, trigger);
39 }
40 }

發郵件依賴的包:activation.jar,mail.jar
將發郵件依賴的包和quartz下載得到的lib路徑下的jar包全部放在mylib路徑下,mylib路徑與java文件位於同一個目錄。編譯和運行時,可以使用命令
set classpath=mylib/*;.;
javac CronTriggerExample.java
java CronTriggerExample

② java中如何實現定時自動發送郵件

可以使用Quartz定時任務使用Cron表達式調用你發送郵件的方法

③ java定時自動發郵件,如何通過自己的PC每天給別人發郵件

做成系統的定時任務,在寫個批處理,只要是開機就行了

④ 我們要用java語言做一個電子郵箱系統,裡面的定時發送,自動回復都是什麼原理

1、是在伺服器上,你可以用java.util.Timer類定義一個定時發送郵件的方法
2、關於郵件發送,建議你到網上找java mail 相關資料,是開源免費的。

⑤ 如何用javamail定時發送郵件 詳細03

Java 計時器框架的本身在這里不作過多的介紹,詳細信息在IBM developerWorks 中國網站。 我們主要討論如何利用Java 計時器框架在Solaris 平台來實現郵件的定時發送、JavaMail 發送郵件的實現以及在Solaris 平台上如何以後台方式運行整個郵件定時發送的應用。 下載本文的源代碼,參考具體實現。 1.1 形成schele.jar 包 schele.jar 包中的目錄結構如下: 我們將資料庫的連接、日誌、郵件和計劃框架的通用類形成一個與具體應用要求無關的schele.jar 包。利用 javac 將編譯生成的目標 class 文件存在當前目錄的 classes 文件夾下,然後通過 jar -cvf schele.jar ./*命令生成schele.jar 包。 1.1.1 Oracle 資料庫連接的建立 位於db 目錄下,通過thin 方式建立與Oracle 的資料庫連接,具體的實現參見《J2EE 應用中與Oracle 資料庫的連接》一文。 1.1.2 日誌 以後台方式定時運行的應用應特別注意日誌的功能,因為只有通過分析詳細的日誌信息才能准確掌握應用的執行情況。在logs 目錄下為Logs.java 文件,代碼如下: package com.j2ee.logs; import java.io.*; import java.util.*; import java.text.SimpleDateFormat; public class Logs { private String logType=""; private String server="/schele/logs/server.log"; private String task="/schele/implements/nohup.out"; private SimpleDateFormat dateFormat = new SimpleDateFormat("【 yyyy 年MM月dd 日 E a HH:mm:ss 】"); /** * @param logType server task */ public Logs(String logType) { this.logType=logType; } public void print(String msg) { try { String path=""; if (logType.equals("server")) path=server; if (logType.equals("task")) path=task; // BufferedWriter out = new BufferedWriter(new FileWriter(path,true)); String str=dateFormat.format(new Date()); if (logType.equals("task")) out.newLine(); out.write(str,0,str.length()); out.write(msg,0,msg.length()); out.newLine(); out.close(); } catch(Exception e) { System.out.println("Logs.print:"+e.getMessage()); } } }; 通過類中的構造器,可以生成兩個日誌文件:server.log 和nohup.out。server.log 用來記錄計時器框架本身定時調度的日誌信息,通過它來判斷定時調度服務每天是否正常運行;nohup.out 用來記錄在具體應用中的調試信息,例如:在應用中通過System.out.println()輸出的信息將記錄在nohup.out 文件中。 1.1.3 郵件 位於mail 目錄下,包括以下一些文件: 1)Debug.java 發送郵件時的調試信息 2)EMailContents.java 郵件的正文,為了使郵件接受者對收到的郵件有一個好的視覺效果,可以先寫一個統一的HTML 郵件模板,在模板中填充相應的內容。EmailContents 類完成這一功能。效果如下: 3)Mailer.java 發送郵件的主方法。它調用MailThread 類中的方法創建一個發送郵件的線程。 4)MailThread.java 發送郵件線程類。它調用MailHelper 中的方法來完成發送郵件的工作。 5)MailHelper.java 發送郵件的實現類。在類的createAndSendMail 方法中包括了發送郵件一系列必須的過程,它可以完成一些郵件的正文、附件、抄送、回執等功能。在郵件的實現中用到了兩個jar 包:mail.jar 和activation.jar。 1.1.4 計劃框架 計劃框架的詳細內容可以通過本文前面提供的連接去詳細了解,本文該部分的代碼也出自IBM網站。 1.2 郵件定時發送的實現 這部分主要用到前面schele.jar 中的類來實現與具體應用要求相適應的應用。在implements 目錄下有三個類: 1)ScheleTask.java 包含一個main 方法,在本例中"每天計劃3 點開始執行計劃好的任務"。 2)ScheleThread.java 線程類,在該類的 run 方法中,可以添加不同類型的計劃定時執行的任務類來完成不同的定時執行的任務,在本例中調用了Mails 類中的sendMail 方法來定時發送郵件。 3)Mails.java 按照一定的業務邏輯規則實現郵件的發送。 1.3 郵件定時發送應用的運行 包括應用的啟動和停止,在Solaris 上我們可以編寫兩個腳本:start 和stop 來完成該工作。 1.3.1 Start 腳本 Start 腳本內容如下: echo '************************************************************' CLASSPATH=.:/schele/implements/jar/schele.jar: /schele/implements/jar/classes12.zip: /schele/implements/jar/mail.jar:/schele/implements/jar/activation.jar export CLASSPATH echo 'set schele running environment success.' nohup java com.j2ee.implement.ScheleTask & echo 'start schele task success.' echo 'view logs:' echo ' /schele/implements/nohup.out' echo ' /schele/logs/server.log' date >> /schele/logs/server.log echo '計劃框架成功啟動' >> /schele/logs/server.log echo '************************************************************' 這里有兩個關鍵點:CLASSPATH 的設置和 nohup 運行方式。在 CLASSPATH 中必須提供用到的所有 jar 包,多個jar 包用":"分隔;"&"表示以後台方式運行,"nohup"使應用的運行不依賴於當前的會話,如果不以"nohup"方式的話,即" java com.j2ee.implement.ScheleTask &",當你關閉你當前的會話時,應用將終止運行。可以使用"ps -ef | grep java"來查看應用運行的進程號。 當然也可以通過手工交互的方式完成上述步驟來運行應用。 1.3.2 Stop 腳本 Stop 腳本內容如下: echo '************************************************************' ps -e | grep java >> ps.out kill -9 `cut -c 2-6 ps.out` rm ps.out date >> /schele/logs/server.log echo '計劃框架成功停止' >> /schele/logs/server.log echo 'stop schele task success.' echo '************************************************************' 該腳本中主要通過" ps -e | grep java"命令將輸出信息重定向到"ps.out"文件中,在從文件中獲得進程號,然後將它kill 掉。同樣也可以通過手工的方式將它kill。 一般的問題在SUN 中國的技術社區都能找的到的 建議你去看看. 這篇是切過來的 你可以去SUN 中國技術社區下載具體實例 使用JSP開發WebMail 系統 電子郵件(E-mail)是Internet 上使用最廣泛的服務之一,傳統的Email 應用模式基於C/S 結構,即用戶使用客戶端的郵件收發工具(如Outlook、Foxmail 等)與提供郵件服務的伺服器(如163.net、263.net、 371.net)通信,在使用客戶端郵件工具之前,用戶要進行一些必要的設置,如指定郵件伺服器的主機地址和通信埠等,這些工作對剛開始上網的用戶會有一定的困難,如果把E-mail 和Web 結合在一起,即通過Web 編程和適當的系統設置,使用戶僅僅以訪問Web 的方式就可以得到和使用完整的郵件服務,這樣將極大地方便上網用戶,這種系統稱為WebMail。WebMail 是目前Internet 上最受歡迎的服務之一,也是很多網站必備功能之一。另外WebMail 同樣也適用於企業或校園網的應用。 通常在後台伺服器的搭建和設置完成後實現WebMail 系統,而前台的開發工作主要是開發工具與後台資料庫和郵件伺服器的交互問題。在Linux 平台上運行的各種伺服器軟體穩定性和可靠性一直很好,而且選擇跨平台的Java 開發工具使系統更穩定,具有更高的伸縮性。 JSP性能 盡管JSP 提供強大的功能是建立在Servlet 之上,但JSP 的性能和Servlet 相差無幾。JSP 首先要編譯成Servlet,這只會增加少量的代碼,僅需編譯一次且可以預編譯,這就消除了運行時花費不必要的負擔。JSP 與Servlet 性能上的差異僅僅表現在返回的數據是二進制的。這是因為JSP 返回時用的是 PrintWriter,而Servlet 可以應用於速度更快的OutputStream。 JSP 自定義的標簽庫可以封裝大量的、復雜的Java 操作在一個Form裡面,這些預先定義好的標簽可以很容易的被那些沒有Java 知識的人調用。因此,JSP 自定義的標簽庫可以有效地實現Java 程序員和 Web 設計人員工作的劃分。然而,在頁面上應用的每一個標簽,Web 容器都必須創建一個新的標簽句柄對象或從標簽緩沖中提取它。因此,過多的應用自定義的標簽將會帶來不必要的資源浪費。 BodyTags 是一種特殊的定製標簽,可以提取在它之間封裝的內容或者替換那些內容。BodyTags 之間的內容一般會備份在內存中。由於BodyTags 之間能夠嵌套和重復,因此,在程序中應用了多級的 BodyTags 會佔用大量寶貴的內存和系統資源。 實現WebMail 的主要功能 該系統提供了獲取、閱讀、書寫、轉發、回復、列印、刪除及用戶管理的功能。考慮到系統的跨平台性,採用Java 及相關技術產品為開發工具,特別是採用JSP 作為服務程序,這樣對客戶端也沒有其它要求,同時系統的性能在高負荷下得到進一步提高。整個WebMail 系統全部採用純Java 代碼,伺服器端每響應一個服務請求啟動一個線程,而不像CGI 那樣啟動一個進程。這樣能夠節省系統資源,提高系統性能。

⑥ 關於java定時任務,一次發了兩封郵件

如果是同時發了2封郵件,自己敲個斷點出來,看一下變數的賦值以及函數是不是調了2次

⑦ 關於java定時發送郵件,類似於QQ郵箱中的定時發送功能

建議方法:

  1. 如果你的java會死亡/失去控制, 請用系統的任務調度來發送郵件;

  2. 如果你的java由jboss等之類的託管, 用jboss內部的任務調度來發送郵件.

方法1:

Windws 平台, 在task中添加一個 任務, 命令行執行java 代碼即可, 這樣可靠性由操作系統保證;

Linux等平台, 直接 crontab 處理即可.

⑧ 用Java怎麼做自動定時發送郵件系統出

兄弟,我想你要明白一個事情,java是運行在虛擬機上的,也就是說,java是一種「受限」的語言,運行在一個受限的環境中:第一,操作系統不允許jvm做的事情你是無法用java實現的,例如鍵盤記錄需要的鉤子,第二,jvm不支持的功能你也是無法使用java寫出來的,例如開機啟動。如果你用java強制修改系統注冊表以達到開機啟動目的,那麼這將是一種jvm的越權操作行為,會被jvm禁止的。一個很明白的例子就是,1.5以前的版本不支持系統托盤,那麼你是無法做一個系統托盤出來的。^_^

閱讀全文

與java定時郵件相關的資料

熱點內容
gz壓縮文件夾 瀏覽:177
字母h從右往左跑的c語言編程 瀏覽:127
安卓手機如何擁有蘋果手機橫條 瀏覽:765
業余編程語言哪個好學 瀏覽:137
按照文件夾分個壓縮 瀏覽:104
航空工業出版社單片機原理及應用 瀏覽:758
如何在電信app上綁定親情號 瀏覽:376
安卓的怎麼用原相機拍月亮 瀏覽:805
配音秀為什麼顯示伺服器去配音了 瀏覽:755
c盤清理壓縮舊文件 瀏覽:325
app怎麼交付 瀏覽:343
圖蟲app怎麼才能轉到金幣 瀏覽:175
如何做徵文app 瀏覽:446
用什麼app管理斐訊 瀏覽:169
安卓如何下載寶可夢劍盾 瀏覽:166
編譯器開發屬於哪個方向 瀏覽:940
megawin單片機 瀏覽:687
以色列加密貨幣監督 瀏覽:909
程序員前端現在怎麼樣 瀏覽:499
伺服器和介面地址ping不通 瀏覽:557