導航:首頁 > 編程語言 > javaqq郵箱發送

javaqq郵箱發送

發布時間:2025-02-24 08:42:04

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

建議方法:

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

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

方法1:

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

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

② java如何使用ssl連接qq郵箱

Gmail目前已經啟用了POP3和SMTP服務,與其他郵箱不同的是Gmail提供的POP3和SMTP是使用安全套接字層SSL的,因此常規的JavaMail程序是無法收發郵件的,下面是使用JavaMail如何收取Gmail郵件以及發送郵件的代碼:
1.[代碼]GmailFetch.java跳至[1][2][全屏預覽]
01packagelius.javamail.ssl;
02
03importjava.io.UnsupportedEncodingException;
04importjava.security.*;
05importjava.util.Properties;
06importjavax.mail.*;
07importjavax.mail.internet.InternetAddress;
08importjavax.mail.internet.MimeUtility;
09
10/**
11*用於收取Gmail郵件
12*@authorWinterLau
13*/
14publicclassGmailFetch{
15
16publicstaticvoidmain(Stringargv[])throwsException{
17
18Security.addProvider(newcom.sun.net.ssl.internal.ssl.Provider());
19finalStringSSL_FACTORY="javax.net.ssl.SSLSocketFactory";
20
21//GetaPropertiesobject
22Propertiesprops=System.getProperties();
23props.setProperty("mail.pop3.socketFactory.class",SSL_FACTORY);
24props.setProperty("mail.pop3.socketFactory.fallback","false");
25props.setProperty("mail.pop3.port","995");
26props.setProperty("mail.pop3.socketFactory.port","995");
27
28//以下步驟跟一般的JavaMail操作相同
29Sessionsession=Session.getDefaultInstance(props,null);
30
31//請將紅色部分對應替換成你的郵箱帳號和密碼
32URLNameurln=newURLName("pop3","pop.gmail.com",995,null,
33"[郵箱帳號]","[郵箱密碼]");
34Storestore=session.getStore(urln);
35Folderinbox=null;
36try{
37store.connect();
38inbox=store.getFolder("INBOX");
39inbox.open(Folder.READ_ONLY);
40FetchProfileprofile=newFetchProfile();
41profile.add(FetchProfile.Item.ENVELOPE);
42Message[]messages=inbox.getMessages();
43inbox.fetch(messages,profile);
44System.out.println("收件箱的郵件數:"+messages.length);
45for(inti=0;i<messages.length;i++){
46//郵件發送者
47Stringfrom=decodeText(messages[i].getFrom()[0].toString());
48InternetAddressia=newInternetAddress(from);
49System.out.println("FROM:"+ia.getPersonal()+'('+ia.getAddress()+')');
50//郵件標題
51System.out.println("TITLE:"+messages[i].getSubject());
52//郵件大小
53System.out.println("SIZE:"+messages[i].getSize());
54//郵件發送時間
55System.out.println("DATE:"+messages[i].getSentDate());
56}
57}finally{
58try{
59inbox.close(false);
60}catch(Exceptione){}
61try{
62store.close();
63}catch(Exceptione){}
64}
65}
66
(Stringtext)
{
69if(text==null)
70returnnull;
71if(text.startsWith("=?GB")||text.startsWith("=?gb"))
72text=MimeUtility.decodeText(text);
73else
74text=newString(text.getBytes("ISO8859_1"));
75returntext;
76}
77
78}
2.[代碼]GmailSender.java
01packagelius.javamail.ssl;
02
03importjava.security.Security;
04importjava.util.Date;
05importjava.util.Properties;
06
07importjavax.mail.Authenticator;
08importjavax.mail.Message;
09importjavax.mail.MessagingException;
10importjavax.mail.PasswordAuthentication;
11importjavax.mail.Session;
12importjavax.mail.Transport;
13importjavax.mail.internet.AddressException;
14importjavax.mail.internet.InternetAddress;
15importjavax.mail.internet.MimeMessage;
16
17/**
18*使用Gmail發送郵件
19*@authorWinterLau
20*/
21publicclassGmailSender{
22
23publicstaticvoidmain(String[]args)throwsAddressException,MessagingException{
24Security.addProvider(newcom.sun.net.ssl.internal.ssl.Provider());
25finalStringSSL_FACTORY="javax.net.ssl.SSLSocketFactory";
26//GetaPropertiesobject
27Propertiesprops=System.getProperties();
28props.setProperty("mail.smtp.host","smtp.gmail.com");
29props.setProperty("mail.smtp.socketFactory.class",SSL_FACTORY);
30props.setProperty("mail.smtp.socketFactory.fallback","false");
31props.setProperty("mail.smtp.port","465");
32props.setProperty("mail.smtp.socketFactory.port","465");
33props.put("mail.smtp.auth","true");
34finalStringusername="[郵箱帳號]";
35finalStringpassword="[郵箱密碼]";
36Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
(){
(username,password);
39}});
40
41//--Createanewmessage--
42Messagemsg=newMimeMessage(session);
43
44//--SettheFROMandTOfields--
45msg.setFrom(newInternetAddress(username+"@mo168.com"));
46msg.setRecipients(Message.RecipientType.TO,
47InternetAddress.parse("[收件人地址]",false));
48msg.setSubject("Hello");
49msg.setText("Howareyou");
50msg.setSentDate(newDate());
51Transport.send(msg);
52
53System.out.println("Messagesent.");
54}
55}

③ 如何使用Java發送qq郵件

方法:

1.前提准備工作:
首先,郵件的發送方要開啟POP3 和SMTP服務--即發送qq郵件的賬號要開啟POP3 和SMTP服務

2.開啟方法:
登陸qq郵箱
3.點擊 設置

4.點擊—-賬戶

5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務 —點擊開啟

6.送簡訊 —–點擊確定

7.稍等一會,很得到一個授權碼! –注意:這個一定要記住,一會用到

8.點擊保存修改 —OK 完成

9.java 測試代碼:
package cn.cupcat.test;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendmailUtil {
public static void main(String[] args) throws AddressException, MessagingException {

Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 連接協議
properties.put("mail.smtp.host", "smtp.qq.com");// 主機名
properties.put("mail.smtp.port", 465);// 埠號
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");//設置是否使用ssl安全連接 ---一般都使用
properties.put("mail.debug", "true");//設置是否顯示debug信息 true 會在控制台顯示相關信息
//得到回話對象
Session session = Session.getInstance(properties);
// 獲取郵件對象
Message message = new MimeMessage(session);
//設置發件人郵箱地址
message.setFrom(new InternetAddress("[email protected]"));
//設置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("[email protected]") });
//設置郵件標題
message.setSubject("這是第一封Java郵件");
//設置郵件內容
message.setText("內容為: 這是第一封java發送來的郵件。");
//得到郵差對象
Transport transport = session.getTransport();
//連接自己的郵箱賬戶
transport.connect("[email protected]", "vvctybgbvvophjcj");//密碼為剛才得到的授權碼
//發送郵件 transport.sendMessage(message, message.getAllRecipients());
}
}
10.運行就會發出郵件了。。。。
下面是我收到郵件的截圖,當然我把源碼中的郵件地址都是修改了,不是真實的,你們測試的時候,可以修改能你們自己的郵箱。最後,祝你也能成功,如果有什麼問題,可以一起討論!

注意事項

得到的授權碼一定要保存好,程序中要使用

④ 怎樣用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

python如何實現定時發送qq消息

因為生活中老是忘記各種事情,剛好又在學python,便突發奇想通過python實現提醒任務的功能(盡管TIM有定時功能),也可定時給好友、群、討論組發送qq消息。其工作流程是:訪問資料庫提取最近計劃——>根據數據內容(提醒時間、提醒對象、提醒內容)設置定時任務——>給特定qq好友發送消息。
1.軟體版本:
2.安裝依賴環境
pymysql安裝:pip install pymysql
qqbot安裝:pip install qqbot

3.資料庫操作
資料庫操作非常簡單,跟Java類似,自己去菜鳥教程看一下基礎語法就好了。
4.配置qqbot登陸信息
也可以不配置,不配置的話就是每次掃碼登陸,但這在Linux系統下不好用,我按說明將配置改成了每次將登陸二維碼發到固定qq郵箱。qqbot模塊在GitHub上,大家可以去看一下模塊說明:qqbot
配置文件默認在用戶目錄下的.qqbot-tmp/v2.3.conf,linux下類似
相關推薦:《Python視頻教程》
5. 自定義功能

6.入口主程序
7.其它
資料庫結構:
dropdatabaseif exists info_db;
createdatabaseinfo_db defaultcharactersetutf8;
use info_db;
createtabletyschele_tb(
id int(11) auto_increment primarykey,
worktime timestampnotnull,
namevarchar(10) notnull,
content varchar(100) notnull
)engine=InnoDB auto_increment=1 defaultcharset=utf8;
以上就是循環發送qq消息的代碼,以下是項目目錄結構,其中一些沒有出現的文件是自己測試所用,可以不用關心:
效果圖:

閱讀全文

與javaqq郵箱發送相關的資料

熱點內容
單片機易混淆概念 瀏覽:591
stata面板固定效應回歸命令 瀏覽:862
lol手游連接不上伺服器怎麼回事 瀏覽:17
演算法工程師求職感悟 瀏覽:486
六一快樂解壓圖 瀏覽:530
effectivecpdf英文 瀏覽:276
查找ip地址命令 瀏覽:878
中國注冊會計師協會演算法人嗎 瀏覽:469
什麼叫伺服器內部錯誤4o4 瀏覽:495
單片機原理復習 瀏覽:435
打不開頭條任務伺服器怎麼辦 瀏覽:646
戰雷錄像在哪個文件夾 瀏覽:465
加密驗證的門禁卡 瀏覽:741
java輸出心 瀏覽:532
程序員的身體素質調查 瀏覽:383
python做一個登錄系統怎麼改界面 瀏覽:885
楊穎緩解壓力的方法 瀏覽:144
約苗app在哪裡改地址 瀏覽:819
tuxedo的加密協議 瀏覽:729
javapdftojpg 瀏覽:715