java - Java 使用 telnet 验证 SMTP 服务器
问题描述
我正在使用一个用于验证 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 秒内正确吗?
解决方案
推荐阅读
- javascript - 数据表过滤器下拉列表未正确显示
- swift - 在 Swift 中检查坐标的安全方式和呈现视觉叠加图的智能方式
- powershell - 使用桌面快捷方式启动 Hyper-V VM
- node.js - 无法将 proxy_server localhost:3000 连接到 nginx 配置文件(docker-compose 项目)
- python - 什么是更好的方法,更少的代码和更多的 ForeignKeys 或更多的代码和列?
- java - SharedPreferences 在 apply() 之后更改设置值
- python - 百分比差异计算
- python - Python Dython 更改 x 和 y 标签字体大小
- asp.net - IdentityServer4 在 Azure 的 Linux Web 应用程序中加载证书
- npm - 纱线从 NX 开始 - react-app-rewired 上的错误: