现在有要求如下:
websocket 连接/smtp 端点,模拟 SMTP 协议发送邮件,发件地址: test@mine.com ,收件地址 test@nullht.com ,邮件内容 Hello World 。请注意:大小写敏感,websocket 连接仅保留 1 分钟左右,断了需要重连并重头发送 SMTP 命令。可以确定发送的地址是 wss://interview-test.nullht.com/smtp
我按照他的要求,写出了下面的代码,其他的不重要,我们直接看我发送请求的格式
private void initializeCommands() {
commandQueue.clear();
commandQueue.add("EHLO mine.com\r\n");
commandQueue.add("MAIL FROM:<test@mine.com>\r\n");
commandQueue.add("RCPT TO:<test@nullht.com>\r\n");
commandQueue.add("DATA\r\n");
// 注意:邮件内容需要包含完整格式
commandQueue.add(
"From: test@mine.com\r\n" +
"To: test@nullht.com\r\n" +
"Subject: Hello\r\n" +
"\r\n" + // 空行分隔头部和正文
"Hello World\r\n" +
".\r\n" // 结束符
);
commandQueue.add("QUIT\r\n");
}
这个代码可以得到下面的响应:
Sending command: EHLO mine.com
Server response: 220 邮件服务器准备就绪
Server response: 250 很高兴认识你
Sending command: MAIL FROM:<test@mine.com>
Server response: 250 发件人已接受
Sending command: RCPT TO:<test@nullht.com>
Server response: 250 收件人已接受
Sending command: DATA
Server response: 500 命令不被识别
显然是 DATA 后的内容有问题,其他的都没毛病。但是我参照下面的教程
https://blog.csdn.net/weixin_39833509/article/details/88965720
感觉这个格式也没问题啊,我试了好久了都没搞出来到底哪里有问题,什么 AI 、谷歌全试过了,有没有大佬救一下,小弟我是真不行了,我先谢谢各位了
这个协议会话没问题。 我 20 年前搞邮件服务器时候,手动 telnet 25 测试发信也是这么输入的。
```
commandQueue.add("DATA");
```