2012-03-08 108 views
1

我嘗試通過Java郵件通過「imap」訪問某個電子郵件服務器上的電子郵件賬戶。我對此做了一些研究。我發現下面的代碼適用於gmail。如何通過javamail訪問Gmail賬戶

import java.io.*; 
import javax.mail.*; 
import javax.mail.internet.*; 

public class DeleteMessageExample { 
    public static void main (String args[]) throws Exception { 
    String host = args[0]; 
    String username = args[1]; 
    String password = args[2]; 

    // Get session 
    Session session = Session.getInstance(
     System.getProperties(), null); 

    // Get the store 
    Store store = session.getStore("imaps"); 
    store.connect(host, username, password); 

    // Get folder 
    Folder folder = store.getFolder("INBOX"); 
    folder.open(Folder.READ_WRITE); 

    BufferedReader reader = new BufferedReader (
     new InputStreamReader(System.in)); 

    // Get directory 
    Message message[] = folder.getMessages(); 
    for (int i=0, n=message.length; i<n; i++) { 
     System.out.println(i + ": " + message[i].getFrom()[0] 
     + "\t" + message[i].getSubject()); 

     System.out.println("Do you want to delete message? [YES to delete]"); 
     String line = reader.readLine(); 
     // Mark as deleted if appropriate 
     if ("YES".equals(line)) { 
     message[i].setFlag(Flags.Flag.DELETED, true); 
     } 
    } 

    // Close connection 
    folder.close(true); 
    store.close(); 
     } 
    } 

然而,我需要指定ARGS [0]是imap.gmail.com ARGS [1]是usrname,ARGS [2]是密碼。如果我用ip地址74.125.224.86替換imap.gmail.com,它不再起作用。

我的問題是假設我有一個雅虎郵件帳戶,我應該使用什麼主機名? 我試過imap.yahoo.com,mail.yahoo.com和ip地址。

如果你知道答案,你是否介意告訴我什麼是常規規則來找出我應該使用什麼樣的主機名?

非常感謝。

+0

您是否嘗試過使用Thunderbird連接到yahoo/IMAP? – Thor 2012-03-08 10:18:17

回答

0

與Gmail不同,Yahoo Mail的IMAP服務不是完全標準的IMAP服務。您需要在登錄之前發送一些特殊的令牌。您需要修改JavaMail API以便通過IMAP連接到Yahoo Mail。最新的JavaMail 1.4.4-SNAPSHOT版本也支持Yahoo Mail。你可以得到它here