javamail api访问gmail收件箱邮件

问题描述 投票:2回答:2

我一直在尝试使用javamail api来读取gmail收件箱消息。我在互联网上找到了以下代码。我试图在Eclipse上运行它,但它失败了“无效的凭据异常”。我在web-app的lib目录中有mail.jar,activation.jar,imap.jar和其他jar文件。

关于为什么我收到这个例外的任何想法?谢谢。

javax.mail.AuthenticationFailedException: Invalid credentials n67if632335wep.219
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:665)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at org.mb.mail.MailReader.main(MailReader.java:23)


package org.mb.mail;

import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.*;

public class MailReader {

public static void main(String args[]) {
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "<username>", "password");
System.out.println(store);

Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
Message messages[] = inbox.getMessages();
for(Message message:messages) {
System.out.println(message);

}

        } catch (NoSuchProviderException e) {
            e.printStackTrace();
            System.exit(1);
        } catch (MessagingException e) {
            e.printStackTrace();
            System.exit(2);
        }

    }

}
gmail javamail
2个回答
3
投票

抛弃该代码并使用this code from the JavaMail FAQ,您还可以在其中找到许多其他有用的提示,包括调试提示。


0
投票

如果你看到这个例外,你就是正确的路径,只需要更改邮件ID或创建一个安全性较低的新gmail id。(例如,主要的gmail帐户在智能手机中配置很多,而且谷歌的安全性很高。 Oauth2.0,这样gmail账号连接会被谷歌阻止,但是当你尝试使用备用gmail id或gmail id时,未在移动设备中配置就可以轻松连接了)以前这个问题终于搞定了。谢谢

© www.soinside.com 2019 - 2024. All rights reserved.