❶ 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}
❷ android怎樣不打開系統瀏覽器實現了發送郵件
下載javamail的java包,加入到你項目的庫中。
2.修改你的郵箱設置,這里以163郵箱為例。打開設置,開啟客戶端授權碼,記住這個授權碼,然後打開POP3/SMTP服務和IMAP/SMTP服務。
輸入相應的代碼(私我給你發)
在使用該庫前先簡單介紹一下 Email for Android 2.3.2 中四個核心的類和相關的方法。
EmailConfig 類
setAccount( ):設置發信人的郵箱(必寫)
setPassword( ) :設置發信人的郵箱密碼或授權碼(必寫)
setSmtpHost( ):設置SMTP伺服器地址(發送郵件時必寫)
setSmtpPort( ):設置SMTP伺服器埠(發送郵件時必寫)
setPopHost( ):設置POP伺服器地址(接收郵件時必寫)
setPopPort( ):設置POP伺服器埠(接收郵件時必寫)
setImapHost:設置IMAP伺服器地址(接收郵件時必寫)
setImapPort:設置IMAP伺服器埠(接收郵件時必寫)
EmailSendClient 類
setTo( ):設置收信人郵箱(必寫)
setCc( ):設置抄送人
setBcc( ):設置密送人
setNickname( ):設置發信人昵稱
setSubject( ):設置郵件主題(必寫)
setText( ):設置文本型的郵件內容(必寫,但 setText( ) 和 setContent( ) 只能二選一)
setContent( ):設置HTML型的郵件內容(同上)
sendAsyn( ):非同步發送郵件(必寫)
EmailReceiveClient 類
popReceiveAsyn( ):使用POP3協議非同步接收郵件
imapReceiveAsyn( ):使用IMAP協議非同步接收郵件
EmailExamine 類
connectServer( ):檢查郵件伺服器配