Как распечатать все входящие электронные письма

#java #sockets #ssl #imap #ports

#java #сокеты #ssl #imap #порты

Вопрос:

Я довольно новичок в Java и ничего не знаю о портах, серверах или сокетах, поэтому я надеялся, что кто-нибудь сможет мне помочь. Я хочу создать небольшую программу, которая будет печатать все сообщения в вашем почтовом ящике (прочитанные и непрочитанные).

Я нашел этот код в Интернете, но он дает мне только мое самое раннее сообщение в моей папке «Отправленные».

 public class EmailService {
  String server = "pop.gmail.com";
  int port = 995;
  static String username;
  static String password;

  SSLSocket socket;
  BufferedReader input;
  PrintWriter output;

  public static void main(String[] args) {
      Scanner s = new Scanner(System.in);
      username = s.next()   "@gmail.com";
      password = s.next();
      new EmailService();
  }

  public EmailService() {
    try {
        SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
        socket = (SSLSocket)sslsocketfactory.createSocket(server, port);
        input = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        // After each println you MUST flush the buffer, or it won't work properly.
        // The true argument makes an automatic flush after each println.
        output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
        connect();
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
  }

  public void connect() throws IOException {
    System.out.print("Greeting message: ");
    String response = readOneLine();
    System.out.println(response);

    // Username
    output.println("USER "   username);
    response = readOneLine();
    System.out.println(response);

    // Password
    output.println("PASS "   password);
    response = readOneLine();
    System.out.println(response);

    output.println("RETR 1");
    while (!response.equals(".")) {
        response = readOneLine();
        System.out.println(response);
    }
  }

  public String readOneLine() throws IOException {
    return input.readLine();
  }
}    
  

Как мне изменить этот код, чтобы получать все сообщения в моем почтовом ящике?

Комментарии:

1. Нет необходимости писать такой низкоуровневый код. Вместо этого используйте библиотеку JavaMail.

2. У Dnault была хорошая идея для вас. JavaMail довольно эффективен. Network Solutions годами использует его для рассылки спама мне и миллионам других. Они не самая умная группа (они не могли остановиться даже после того, как я подал на них в суд), поэтому она также должна быть проста в использовании.