Чтение писем через POP3 в Gmail через Java - PullRequest
2 голосов
/ 01 апреля 2012

Добрый вечер, ТАК

Я пытаюсь создать замечательный кусок кода, который может получать сообщения по протоколу POP. До сих пор я следовал RFC1939 (спецификация POP).

И на самом деле он работает с сервером POP3 моего веб-хоста (который не использует SSL). Но при доступе к GMail все, что я получаю, это пустые ответы: (

Я предполагаю, что это часть SSL, которая "ломает" ее.

В моей «открытой» функции, которая создает сокет, у меня есть это:

public void open() throws UnknownHostException, IOException 
{
    if(this.SSL)
    {
        SSLSocketFactory fac = (SSLSocketFactory) SSLSocketFactory.getDefault();
        this.s = fac.createSocket(this.in_host, this.in_port);
    }
    else
    {
        this.s = new Socket(this.in_host, this.in_port);
    }

    this.out = new PrintWriter(s.getOutputStream(), true);
    this.in = new BufferedReader(new InputStreamReader(s.getInputStream()));
}

где SSL - это логическое значение, указывающее, что соединение должно быть через SSL, а s - это сокет. in_host и in_port - хост (pop.gmail.com) и порт (995). out и in - это потоки, которые я пишу и читаю в / из.

Одной из худших частей является то, что она не выдает никаких ошибок. Там, где я обычно получаю ответ, я просто получаю пустую строку.

Вопрос: как мне подключиться к серверу POP по SSL / TLS, предпочтительно к серверу Gmail?

1 Ответ

3 голосов
/ 01 апреля 2012

Что-то вроде этого:

public void connect() throws Exception {

    String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

    Properties pop3Props = new Properties();

    pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
    pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
    pop3Props.setProperty("mail.pop3.port",  "995");
    pop3Props.setProperty("mail.pop3.socketFactory.port", "995");

    URLName url = new URLName("pop3", "pop.gmail.com", 995, "",
            username, password);

    session = Session.getInstance(pop3Props, null);
    store = new POP3SSLStore(session, url);
    store.connect();

}

См. статью для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...