java - 如何通过javamail访问gmail帐户

标签 java gmail jakarta-mail

我尝试通过java邮件通过“imap”访问某个电子邮件服务器上的电子邮件帐户。我对此做了一些研究。我发现以下代码适用于 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 地址。

如果您知道答案,您是否介意告诉我确定我应该使用哪种主机名的常规规则是什么?

非常感谢。

最佳答案

与 Gmail 不同,Yahoo Mail 的 IMAP 服务并不是完全标准的 IMAP 服务。您需要在登录前发送一些特殊 token 。您需要修改 JavaMail API 才能通过 IMAP 连接到 Yahoo Mail。最新的 JavaMail 1.4.4-SNAPSHOT 版本也支持 Yahoo Mail。即可获取here

关于java - 如何通过javamail访问gmail帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9614839/

相关文章:

java - Eclipse编辑器问题: It only shows one element instead of whole source code!

使用接口(interface)调用的 Java 方法重载

java - 从JSON过滤JSON变量

gmail - gmail 如何在后台工作

java - 如何在 Gmail SMTP 中指定显示名称?

java - Liferay 控制台 Groovy 脚本缺少方法错误

google-apps-script - 使用应用脚本将符合条件的电子邮件导入 Google 电子表格

php - 在 Zend Mail 中以 mbox 格式从 Gmail 中获取电子邮件

java - 使用JavaMail阅读邮件

jakarta-mail - 如何从 Java Mail 客户端获取重要标志