A. 用javamail怎樣監聽新郵件
folder = store.getDefaultFolder();//獲取默認文件夾
if (folder == null) throw new Exception("No default folder");
folder = folder.getFolder("INBOX");//鏈接收件箱
if (folder == null) throw new Exception("No POP3 INBOX");
folder.open(Folder.READ_ONLY);//使用只讀方式打開收件箱
Message[] msgs = folder.getMessages();//得到文件夾信息,獲取列表
B. 如何使用JavaMail刪除QQ郵件伺服器上的郵件
JavaMail是提供給開發者處理電子郵件相關的編程介面。它是Sun發布的用來處理email的API。可以方便地執行一些常用的郵件傳輸。
如果需要使用JavaMail編程來實現刪除QQ郵件伺服器上的郵件,可以參考以下代碼,在調用deleteMessages方法時,只需要傳入郵件伺服器地址、埠、郵箱登錄用戶名、登錄密碼以及需要刪除的郵件主題五個參數即可:
packagecom.what21.network.mail;
importjava.util.Properties;
importjavax.mail.Flags;
importjavax.mail.Folder;
importjavax.mail.Message;
importjavax.mail.MessagingException;
importjavax.mail.NoSuchProviderException;
importjavax.mail.Session;
importjavax.mail.Store;
{
/**
*刪除主題中包含subjectToDelete字元串的所有郵件
*
*@param郵箱伺服器地址
*@param郵箱伺服器埠
*@param登錄用戶名
*@param登錄密碼
*@param如果郵件主題包含這個字元串就會對其進行刪除操作
*/
publicvoiddeleteMessages(Stringhost,Stringport,StringuserName,
Stringpassword,StringsubjectToDelete){
Propertiesproperties=newProperties();
//郵箱伺服器配置
properties.put("mail.imap.host",host);
properties.put("mail.imap.port",port);
//SSL連接配置
properties.setProperty("mail.imap.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.imap.socketFactory.fallback","false");
properties.setProperty("mail.imap.socketFactory.port",
String.valueOf(port));
Sessionsession=Session.getDefaultInstance(properties);
try{
//連接郵箱伺服器
Storestore=session.getStore("imap");
store.connect(userName,password);
//打開收件箱
FolderfolderInbox=store.getFolder("INBOX");
folderInbox.open(Folder.READ_WRITE);
//從伺服器獲取新郵件
Message[]arrayMessages=folderInbox.getMessages();
for(inti=0;i<arrayMessages.length;i++){
Messagemessage=arrayMessages[i];
Stringsubject=message.getSubject();
if(subject.contains(subjectToDelete)){
//給需要刪除的郵件打上標簽
message.setFlag(Flags.Flag.DELETED,true);
System.out.println("MarkedDELETEformessage:"+subject);
}
}
//刪除指定的郵件
booleanexpunge=true;
folderInbox.close(expunge);
//anotherway:
//folderInbox.expunge();
//folderInbox.close(false);
//斷開連接
store.close();
}catch(NoSuchProviderExceptionex){
System.out.println("Noprovider.");
ex.printStackTrace();
}catch(MessagingExceptionex){
System.out.println(".");
ex.printStackTrace();
}
}
/**
*測試-Gmail郵箱
*protocol.
*/
publicstaticvoidmain(String[]args){
Stringhost="imap.gmail.com";
Stringport="993";
StringuserName="your_email";
Stringpassword="your_password";
EmailMessageRemoverremover=newEmailMessageRemover();
StringsubjectToDelete="Newsletter";
remover.deleteMessages(host,port,userName,password,subjectToDelete);
}
}
C. javamail如何收附件
參考代碼如下:
import javax.mail.*;
import java.util.*;
import java.io.*;
public class ReceiveMail {
//處理任何一種郵件都需要的方法
private void handle(Message msg) throws Exception {
System.out.println("郵件主題:" + msg.getSubject());
System.out.println("郵件作者:" + msg.getFrom()[0].toString());
System.out.println("發送日期:" + msg.getSentDate());
}
//處理文本郵件
private void handleText(Message msg) throws Exception {
this.handle(msg);
System.out.println("郵件內容:"+msg.getContent());
}
//處理Multipart郵件,包括了保存附件的功能
private static void handleMultipart(Message msg) throws Exception {
String disposition;
BodyPart part;
Multipart mp = (Multipart) msg.getContent();
//Miltipart的數量,用於除了多個part,比如多個附件
int mpCount = mp.getCount();
for (int m = 0; m < mpCount; m++) {
this.handle(msg);
part = mp.getBodyPart(m);
disposition = part.getDisposition();
//判斷是否有附件
if (disposition != null && disposition.equals(Part.ATTACHMENT))
{
//這個方法負責保存附件
saveAttach(part);
} else {
//不是附件,就只顯示文本內容
System.out.println(part.getContent());
}
}
}
private static void saveAttach(BodyPart part) throws Exception {
//得到未經處理的附件名字
String temp = part.getFileName();
//除去發送郵件時,對中文附件名編碼的頭和尾,得到正確的附件名
//(請參考發送郵件程序SendMail的附件名編碼部分)
String s = temp.substring(8, temp.indexOf("?="));
//文件名經過了base64編碼,下面是解碼
String fileName = base64Decoder(s);
System.out.println("有附件:" + fileName);
InputStream in = part.getInputStream();
FileOutputStream writer = new FileOutputStream(new File(
"保存附件的本地路徑"+ "\\"+fileName));
byte[] content = new byte[255];
int read = 0;
while ((read = in.read(content)) != -1) {
writer.write(content);
}
writer.close();
in.close();
}
//base64解碼
private static String base64Decoder(String s) throws Exception {
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
byte[] b = decoder.decodeBuffer(s);
return (new String(b));
}
public static void receive(String receiverMailBoxAddress, String username,String password) {
//本人用的是yahoo郵箱,故接受郵件使用yahoo的pop3郵件伺服器
String host = "pop.mail.yahoo.com.cn";
try {
//連接到郵件伺服器並獲得郵件
Properties prop = new Properties();
prop.put("mail.pop3.host", host);
Session session = Session.getDefaultInstance(prop);
Store store = session.getStore("pop3");
store.connect(host, username, password);
Folder inbox = store.getDefaultFolder().getFolder("INBOX");
//設置inbox對象屬性為可讀寫,這樣可以控制在讀完郵件後直接刪除該附件
inbox.open(Folder.READ_WRITE);
Message[] msg = inbox.getMessages();
FetchProfile profile = new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);
inbox.fetch(msg, profile);
for (int i = 0; i < msg.length; i++) {
//標記此郵件的flag標志對象的DELETED位為true,可以在讀完郵件後直接刪除該附件,具體執行時間是在調用
//inbox.close()方法的時候
msg[i].setFlag(Flags.Flag.DELETED, true);
handleMultipart(msg[i]);
System.out.println("****************************");
}
if (inbox != null) {
//參數為true表明閱讀完此郵件後將其刪除,更多的屬性請參考mail.jar的API
inbox.close(true);
}
if (store != null) {
store.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
D. javamail使用IMAP協議接受QQ郵件不成功,大蝦們幫忙解決下~
Folder改成IMAPFolder f=(IMAPFolder)store.getFolder("INBOX");試試
E. JavaMail問題,怎樣獲得發件箱,草稿箱,回收站裡面的郵件
獲取發件箱、復草稿箱、回收制站的代碼很簡單:
我們在獲取收件箱的代碼是:
Folder folder = store.getFolder("INBOX");
但是我們在獲取發件箱、與草稿箱時出現異常,這時就與郵件伺服器的文件夾有關;
可以這樣獲取所有的文件夾:
Folder defaultFolder = store.getDefaultFolder();
Folder[] allFolder = defaultFolder.list();
通過調試或者迭代出來文件夾名稱再通過找出來的文件夾名稱獲取發件箱與草稿箱集合:Folder folder = store.getFolder("這里是迭代找出來的文件夾名稱");
根據獲取的文件夾去得到裡面的文件,
F. 使用javamail查詢收件箱,如何獲得郵件的發送時間呢請詳細說明,謝謝
首先必須獲取抄鏈接:
Properties props = new Properties();
Session session = Session.getInstance(props);
Store store = session.getStore(receiptorPro);
store.connect(「接受郵件伺服器」, 「埠」, 「用戶名」, 「密碼」);
打開Folder:
Folder inbox = store.getFolder("INBOX");
Folder有pop3和imap兩種:
IMAPFolder folder = (IMAPFolder) inbox;
folder.open(Folder.READ_WRITE);//Folder.READ_WRITE為打開狀態
獲取郵件:
Message[] messages = folder.getMessages();
for (int i = 0; i < messages.length; i++) {
Date sendDate = messages[i].getSentDate();
//ok 就能取出發送時間
}