当前位置: 首页 > 知识库问答 >
问题:

当我尝试通过IMAP连接到Gmail时,javax.mail.MessagingException将抛出

章心水
2023-03-14

试图通过IMAP连接连接到gmail,捕获javax.mail.MessagingException

public static StringBuffer getEmailByBody(String username, String password, String containsMsg) throws Exception {
    Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps");
    props.setProperty("mail.imap.ssl.enable", "true");

    Session session = Session.getDefaultInstance(props, null);
    Store store = session.getStore("imaps");
    try {
        store.connect("imap.gmail.com", username , password);
    } catch (Exception ex) {
        ex.printStackTrace();
        throw new Exception("Fail in connection" + ex.getMessage());
    }

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

    Message[] messages = null;
    boolean isMailFound = false;
    Message confirmationMAil = null;

    // Search for mail MAX 10 runs
    for (int i = 0; i < 10; i++) {
        messages = folder.search(new BodyTerm(containsMsg), folder.getMessages());
        for(Message message : messages){
            if (!message.isSet(Flags.Flag.SEEN)) {
                confirmationMAil = message;
                isMailFound = true;
                break;
            }
        }
        // wait for 3 seconds if message is not found
        if (!isMailFound) {
            Thread.sleep(3000);
        }
    }

    // Search latests for unread mail
    for(Message message : messages){
        if (!message.isSet(Flags.Flag.SEEN)) {
            confirmationMAil = message;
            isMailFound = true;
            break;
        }
    }

    // Test fails if no unread mail was found from God
    if (!isMailFound) {
        throw new Exception("Could not find email");

        // Read the content of mail and launch registration URL
    } else {
        String line;
        StringBuffer buffer = new StringBuffer();
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                confirmationMAil.getInputStream()));
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
        }
        return buffer;
    }
}

堆栈跟踪:

主:

public static void main(String[] args) throws Exception {
        MailManager.getEmailByBody("asd@gmail.com", "password", "Hello");
}

共有1个答案

薛淳
2023-03-14

尝试添加这行代码prop.put(“mail.imap.ssl.trust”,“*”);

 类似资料:
  • 我使用的是David Walsh的脚本,它通过IMAP连接到Gmail,并在屏幕上输出电子邮件数据。 我已经运行了两个测试案例: 使用 IMAP 从我自己的域读取电子邮件。 使用 IMAP 从 gmail 读取电子邮件。 读120封邮件的时间差别很大。对于Gmail,整个脚本需要大约5秒,其中1.2秒连接,3.8秒阅读邮件,0.1629秒连接,0.0238秒阅读邮件。 这些价值观与我的预期大相径庭

  • 我有这个代码可以通过IMAP连接到Gmail 我总是会遇到这个例外,指向商店。connect() 我已经检查了谷歌的所有信息,如果我是对的,IMAP的端口是993。用户名和密码绝对正确。我想我错过了一些东西,但我无法弄清楚。 任何帮助都将不胜感激! 编辑 添加邮件后。debug,我得到了这些日志,但我仍然停留在商店里。connect() 它已登录,但仍卡在connect上。。

  • 我得到一个错误:- 不能 请帮助我。 并指导我做什么,因为我需要在我的 Web 项目中使用它。

  • 我正在使用SpringMVC和Hibernate构建一个应用程序。我还没有将Hibernate和Spring集成在一起(对两者都是新的),并且希望确保可以首先通过Hibernate打开会话。 我创建了一个简单的函数来测试,当前收到以下错误: 线程“main”java.lang.nosuchmethoderror中出现异常:org.hibernate.integrator.internal.inte

  • 我正在尝试连接到远程主机以发出命令,但在运行代码时收到以下错误消息: SSH:握手失败:SSH:密钥交换没有通用算法;提供的客户端:[curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 difffie-hellman-group14-sha1],提供的服务器:[difffie-h

  • '535-5.7.8不接受用户名和密码。有关详细信息,请访问535 5.7.8https://support.google.com/mail/?p=BadCredentialsx66sm1596680lff。64-gsmtp“请问我能做什么?”。我正在尝试将电子邮件信息集成到我的应用程序中,即使在通过Gmail API激活并检索到client\u id和client\u secret之后,仍然没有