Я использую библиотеку для проверки SMTP-соединения, чтобы проверить недействительные почтовые домены, чтобы избежать отправки почты и отказов, просто я использую telnet для имитации MAIL FROM: <{Address}>
и RCPT TO: <{Address}>
, используя BufferedWriter
и BufferedReader
следующим образом :
private static void send(BufferedWriter wr, String text)
throws IOException {
wr.write(text + "\r\n");
wr.flush();
return;
}
private static int receive(BufferedReader in) throws IOException {
String line = null;
int eCode = 0;
while ((line = in.readLine()) != null) {
String pfx = line.substring(0, 3);
try {
eCode = Integer.parseInt(pfx);
} catch (Exception ex) {
eCode = -1;
}
if (line.charAt(3) != '-') break;
}
return eCode;
}
звонит так:
Socket skt = new Socket("gmail-smtp-in.l.google.com", 25);
BufferedReader bufferedReader = new BufferedReader (new InputStreamReader(skt.getInputStream()));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(skt.getOutputStream()));
send(bufferedWriter, "MAIL FROM: <{Address}>");
int status = receive(bufferedReader);
send(bufferedWriter, "RCPT TO: <{Address}>");
status = receive(bufferedReader);
единственная проблема, с которой я сталкиваюсь при таком подходе, - это производительность, поскольку MAIL FROM
CMD обычно занимает 10 сек, а RCPT TO
CMD - 20 сек ( вкл. терминал )
что слишком много, есть ли идея, как сделать это быстро или использовать другой механизм, чтобы добиться этого правильно за максимум 1 или 2 секунды?