#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 годами использует его для рассылки спама мне и миллионам других. Они не самая умная группа (они не могли остановиться даже после того, как я подал на них в суд), поэтому она также должна быть проста в использовании.