554 exim4和我的代码的SMTP同步错误
我在exim4中遇到了此拒绝错误: 2010-02-15 01:46:05 SMTP协议同步错误(在未等待问候语的情况下发送输入):拒绝了来自H=ender[192.168.20.49]input=“HELO 192.168.20.49\r\n” 我已修改exim4配置以不强制同步,如下所示:554 exim4和我的代码的SMTP同步错误,smtp,exim4,Smtp,Exim4,我在exim4中遇到了此拒绝错误: 2010-02-15 01:46:05 SMTP协议同步错误(在未等待问候语的情况下发送输入):拒绝了来自H=ender[192.168.20.49]input=“HELO 192.168.20.49\r\n” 我已修改exim4配置以不强制同步,如下所示: smtp_enforce_sync='false' acl_smtp_connect = nosync nosync: control = no_enforce_sync
smtp_enforce_sync='false'
acl_smtp_connect = nosync nosync:
control = no_enforce_sync
accept
但这似乎并不重要。对我来说不太有意义的是为什么我首先要买554。我发送了一个直升机,我等待回应,不知何故,在这过程中,我设法产生了“554错误”
在下面的代码中,我做错了什么,导致99%的时间失败(是的,它已经工作了两次)。是的,插座堵塞,我在recv中挂了约5秒钟,等待拒绝。在这两次工作时,它根本没有暂停
我试着派埃洛而不是希洛,运气不好。我甚至为得到一个telnet会话来连接和说HELO而感到悲伤。然而,我可以使用PythonSMTP(从另一台机器上)在同一台服务器上发送电子邮件
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
行。见本手册第3.1节。这可能就是Python库所做的
例如,应该有几个免费的库可以帮助您实现这一点。考虑花时间学习其中的一个,而不是修补你自己的解决方案(除非你的项目是写你自己的邮件解决方案)。< / P>我无耻地偷了代码,因为我正在尝试得到一个我的测试程序给我发电子邮件,当它完成了!我确实在上面的链接中找到了这个代码。大多数smtp LIB在windows下运行似乎有很多麻烦。感谢您在我发送HELO之前提醒我220的到来,我在规范中遗漏了这一点。我已经对代码进行了一些清理,我可能会在那篇文章的评论中发布它。