javamail api访问gmail收件箱邮件

时间:2012-07-11 11:10:35

标签: gmail javamail

我一直在尝试使用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);
        }

    }

}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

如果看到此异常,则位于正确的路径中,只需要更改邮件ID或创建新的Gmail ID ,这将降低安全性。(例如,主要的Gmail帐户已在智能手机中进行了很多配置,并且通过Oauth2.0在Google上得到了高度保护,因此Google会阻止gmail帐户连接,但是当您尝试使用替代gmail ID时或未在移动设备上配置的gmail ID 即可轻松建立连接) 以前这个问题让我很头疼,终于得到解决。谢谢