我正在尝试使用 openssl 从命令行发送邮件。我能够连接到端口 465 上的 gmail smtp 服务器,并且身份验证成功。MAIL FROM 和 rcpt to 也工作正常。接下来,当我输入数据时,它给了我一个 354,并继续,这也很好。在数据中我输入了以下内容:
FROM: <[email protected]>
To: <[email protected]> // I am sending and receiving the mail to my account itself for test purposes
Subject: test
hello!
.
现在问题出现了,在我输入之后,光标只是闪烁,我没有收到 250 OK,排队等待交付的响应。
请帮忙!!
我正在 ubuntu 9.10 上尝试这一切。
答案1
啊...然而读完这个主题后,我花了几个小时才找到答案!!
在这里发布我的解决方案:
互联网上到处都在告诉你,你应该使用 -crlf 开关来执行初始连接命令 - 我就是这么做的。
但是...这只适用于 Linux/unix!在 Windows 上,您不能使用此开关!
答案2
。 需要单独占一行...然后跟着另一个回车符...
IE
你好! 。
(这可能是 serverfault 的格式搞砸了...但请检查。)
在代码中...它应该是<cr>.<cr>或者使用crlf而不是仅仅使用cr。
答案3
我遇到了这个问题(仅限 Gmail),然后看到了这个问题。我最终发现,构建一个 CRLF 并发送它而不是 '\n' 可以解决问题。
char eol[3];
eol[0] = '\r';
eol[1]= '\n';
eol[2] = '\0';
string crlf = string(eol);
string endit(crlf + '.' + crlf);
send(socket_id, endit.c_str(), endit.length(), 0) < 0);