Ошибка 997 (ERROR_IO_PENDING) из CSMTPConnection :: SendSimple («Выполняется операция перекрытия ввода-вывода» - PullRequest
0 голосов
/ 21 июля 2009

CSMTPConnection - это класс ATL (VC ++) в atlsmtpconnection.h. Код:

static _TCHAR mailserver[ 256 ];
static _TCHAR mailsender[ 256 ];
static _TCHAR mailrecips[ 256 ];
static _TCHAR subject[ 256 ];
static _TCHAR msg[ 256 ];
static DWORD mailtimeout=10000;
static CSMTPConnection con;
...
if (con.Connect( mailserver, mailtimeout )){
  if (con.SendSimple( mailrecips, mailsender, subject, msg)) {
    // it worked
  } else {
    // it failed
  }
} else {
  // it failed
}

Построен с VS2005. Развертывание в службе на смеси серверов Windows 2008 и Windows 2003 (около 10). Работает везде, кроме ОДНОГО из серверов Windows 2003, где метод SendSimple (или это может быть Connect) ВСЕГДА выдает ошибку 997 - Выполняется операция перекрытия ввода-вывода. Я полагаю, я мог бы просто продолжать вызывать SendSimple в цикле, пока не получу ошибку, но сработает ли это?

1 Ответ

0 голосов
/ 30 июля 2009

Может быть, вам следует подождать, пока функция-член Connected вернет TRUE, прежде чем вызывать SendSimple ()? Похоже, вы пытаетесь отправить сообщение до того, как соединение с почтовым сервером будет полностью установлено.

...