Я бежал с головой в этот отклонять ошибку от exim4:554 SMTP ошибки синхронизации с exim4 и моим кодом
2010-02-15 1:46:05 SMTP ошибки синхронизации протокола (вход отправлен, не дожидаясь приветствий): отверг соединение от H = Эндер [192.168.20.49] вход = "HELO 192.168.20.49 \ г \ п"
Я изменил мой exim4 конфигурации, чтобы не применять синхронизацию, например, так:
smtp_enforce_sync='false'
acl_smtp_connect = nosync nosync:
control = no_enforce_sync
accept
Но что кажется, не имеет значения. То, что имеет для меня меньше смысла, - это то, почему я получаю 554 в первую очередь. Я посылаю HELO, я жду ответа, и как-то посреди этого, мне удается генерировать «Ошибка 554»
Что я делаю неправильно в приведенном ниже коде, что заставляет это терпеть неудачу 99% времени (да, он работал дважды). Да, сокет блокируется, я вишу в recv в течение ~ 5 секунд, ожидая отклонения. В 2 раза, когда он сработал, он не остановился вообще.
Я пытался отправить EHLO вместо HELO, не повезло. У меня даже было печаль, когда я получил сеанс telnet, чтобы подключиться и сказать 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';
Я бесстыдно украл код с http://www.codeproject.com/KB/IP/zsmtp.aspx?msg=1332673#xx1332673xx Я пытаюсь получить одну из моих тестовых программ, чтобы отправить мне по электронной почте, когда это законченный! – boatcoder