如何在Java中设置Email Client?

时间:2011-03-15 13:27:29

标签: java email

我在java中尝试非常简单的Email Client。 当我启动程序时,我有一条错误消息:

Exception in thread "main" javax.mail.AuthenticationFailedException: EOF on socket
        at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:146)
        at javax.mail.Service.connect(Service.java:297)
        at javax.mail.Service.connect(Service.java:156)
        at SimpleEmailClient2.main(SimpleEmailClient2.java:21)
Java Result: 1

为什么呢? 我使用Gmail帐户,并设置了POP和IMAP 我的代码中可能出现的错误是什么? 谢谢

这是代码:

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;

public class SimpleEmailClient2 {

  public static void main(String[] args) throws Exception {

    Properties props = new Properties();

    String host = "pop.gmail.com";
    String provider = "pop3";

    Session session = Session.getDefaultInstance(props, new MailAuthenticator());
    Store store = session.getStore(provider);
    store.connect(host, null, null);

    Folder inbox = store.getFolder("INBOX");
    if (inbox == null) {
      System.out.println("No INBOX");
      System.exit(1);
    }
    inbox.open(Folder.READ_ONLY);

    Message[] messages = inbox.getMessages();
    for (int i = 0; i < messages.length; i++) {
      System.out.println("Message " + (i + 1));
      messages[i].writeTo(System.out);
    }
    inbox.close(false);
    store.close();
  }
}

class MailAuthenticator extends Authenticator {

  public MailAuthenticator() {
  }

  public PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication("email@gmail.com", "password");
  }
}

2 个答案:

答案 0 :(得分:2)

我不相信gmail支持pop3提供程序;你必须使用pop3s。否则这应该可以正常工作。

答案 1 :(得分:1)

Oracle提供了有关将javamail连接到gmail here的信息。

具体来说,在尝试建立连接时,您似乎失败了,可能是因为您没有指定要连接的用户名/密码。尝试使用以下内容进行连接:

store.connect(host, "user618111@gmail.com", "[myPassword]");