gpt4 book ai didi

smtp - exim4 和我的代码发生 554 SMTP 同步错误

转载 作者:行者123 更新时间:2023-12-02 14:40:06 27 4
gpt4 key购买 nike

我已经一头扎进了 exim4 的拒绝错误:

2010-02-15 01:46:05 SMTP 协议(protocol)同步错误(输入已发送,无需等待问候语):拒绝来自 H=ender [192.168.20.49] input="HELO 192.168.20.49\r\n"< 的连接/p>

我已修改我的 exim4 配置以不强制同步,如下所示:

 smtp_enforce_sync='false'
acl_smtp_connect = nosync nosync:
control = no_enforce_sync
accept

但这似乎并不重要。对我来说不太有意义的是为什么我首先购买 554。我发送了一个 HELO,等待响应,不知怎的,我设法生成了“554 错误”

我在下面的代码中做错了什么,导致 99% 的时间都失败(是的,它已经成功了两次)。是的,套接字正在阻塞,我卡在接收状态大约 5 秒等待拒绝。在它运行的两次中,它根本没有暂停。

我尝试过发送 EHLO 而不是 HELO,但运气不佳。我什至对通过 telnet session 进行连接并说“HELO”感到悲伤。但是,我可以使用 python smtp(从另一台机器)向同一台服务器发送电子邮件!

        hSocket = _connectServerSocket(server, port);    
if (hSocket != INVALID_SOCKET) {
BYTE sReceiveBuffer[4096];
int iLength = 0;
int iEnd = 0;
char buf[4096];

strcpy(buf, "HELO ");
strcat(buf, "192.168.20.49");
strcat(buf, "\r\n");
printf("%s", buf);
if (send(hSocket, (LPSTR)buf, strlen(buf), NO_FLAGS) == SOCKET_ERROR) {
printf("Socket send error: %d\r\n", WSAGetLastError());
return (false);
}
iLength = recv(hSocket,
(LPSTR)sReceiveBuffer+iEnd,sizeof(sReceiveBuffer)-iEnd,
NO_FLAGS);
iEnd += iLength;
sReceiveBuffer[iEnd] = '\0';

最佳答案

在发送 HELO 消息之前,您的代码应等待来自 smtp 服务器的 220 行。请参阅 RFC 2821 的第 3.1 节。这可能就是 Python 库的作用。

应该有几个可用的免费库可以帮助您解决此问题,例如 libsmtp 。考虑花时间学习其中之一,而不是修补您自己的解决方案(除非您的项目是编写自己的邮件解决方案)。

关于smtp - exim4 和我的代码发生 554 SMTP 同步错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264673/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com