• 请教一个使用 SMTP 协议发送邮件的问题
  • 发布于 1周前
  • 57 热度
    7 评论
现在有要求如下:
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 、谷歌全试过了,有没有大佬救一下,小弟我是真不行了,我先谢谢各位了
用户评论
  • Zappos
  • 遇到 “Server response: 500 命令不被识别” 这类错误时,通常表示服务器在处理请求时遇到了未预期的内部错误,而具体原因可能与命令格式、权限、依赖或配置相关。
  • 2025/5/21 7:05:00 [ 0 ] [ 0 ] 回复
  • Vinda
  • 用 gpt 或 claude 写一个 websocket to tcp 的桥接程序,还原出 smtp ,然后用 java 内置的发邮件功能试试。自己手搓基于邮件协议的代码,中文编码、html 邮件、附件功能都是有工作量的。或者,你可以问问公司是否能提供 smtp ( 25 端口)或者 smtps ( 465 端口),可以直接用 java 内置的发邮件功能;或者是否提供高级的邮件 api ,输入 from 、to 、subject 、mailbody 能直接发邮件。基于 smtp 协议让员工手搓,感觉有点扯了。
  • 2025/5/20 8:24:00 [ 0 ] [ 0 ] 回复
  • 耀国
  • \r\n 改成 \n\r 看看。
    这个协议会话没问题。 我 20 年前搞邮件服务器时候,手动 telnet 25 测试发信也是这么输入的。
  • 2025/5/20 8:14:00 [ 0 ] [ 0 ] 回复
  • 昨日情书
  • 这也太底层了,email 的协议又很古老复杂,现在不都是用第三方发信直接 rest api 就完了,第三方帮你屏蔽了底层细节了。
  • 2025/5/20 7:51:00 [ 0 ] [ 0 ] 回复