Я пытаюсь использовать SSL с IMAP в java. Я не хочу использовать класс IMAP. По какой-то причине, когда я отправляю n-е сообщение, я получаю ответ на сообщение n-2, а не сообщение n-1. Это означает, что я не получаю никакого ответа на первое отправленное сообщение, пока не отправлю второе сообщение. Может ли кто-нибудь определить, что не так в минимальном коде? (Это действительно минимальна, кроме Println, который, я думаю, при отладке)Java, SSLSocket, не получая ответа
import java.io.*;
import javax.net.ssl.*;
public class Mail{
static String server = "imap.gmail.com";
static String user = "[email protected]";
static String pass = "azerty75";
public static void print (PrintWriter to, String text){
System.out.println("sent : "+text);
to.println(text+ "\r");
to.flush();
}
public static void read (BufferedReader from) throws InterruptedException, IOException {
do {
String line = from.readLine();
System.out.println("received: "+line);
} while (from.ready());
}
public static void main(String[] args){
try{
SSLSocket sslsocket = (SSLSocket) SSLSocketFactory.getDefault().createSocket(server, 993);
System.out.println("Start connexion");
BufferedReader from = new BufferedReader(new InputStreamReader(sslsocket.getInputStream()));
// read(from);
PrintWriter to = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sslsocket.getOutputStream())), true);
print(to,"a1 login "+user+" "+pass);
read(from);/*exepcted:
OK gimap ready
a1 OK [email protected] authenticated (Success)*/
sslsocket.close();
System.out.println("End connexion");
}
catch (Exception e){
e.printStackTrace();
}
}
}
Почему вы не используете JavaMail для этого? – EJP
Вы действительно отправляете пар CRLF? Вместо того, чтобы просто линии кормить? – Max
@EJP Один из моих целей - также для undesrtand socket и, в частности, для безопасного сокета –