У меня есть приложение, в котором я создаю электронное письмо, которое я хочу, чтобы SMTP-сервер (IIS) в том же ящике доставлял (ОС - 32-разрядная версия сервера 2003). Я отправляю это с помощью метода "cdSendUsingPickup".
Используя свой интерфейс IMessage, я копирую сообщение в каталог раскладки серверов. Все отлично работает, пока мое сообщение меньше ~ 150 МБ. Размер учитывается вложениями к почте. Но если я включу вложения сверх этого предела, IMessage::GetStream() завершится с ошибкой 0x8007000e — для завершения этой операции недостаточно места для хранения. На сервере достаточно HD-пространства. Я столкнулся с каким-то ограничением пространства, и я думаю, что это скорее ограничение памяти, а не проблема с пространством на жестком диске, но я не нахожу подсказок относительно того, что происходит. Псевдокод ниже — вызов GetStream завершается ошибкой с сообщением размером более 150 МБ или около того. Отлично работает с небольшими сообщениями.
DlvrMsg(IMessage piMsg)
{
_StreamPtr pStream = NULL;
HRESULT hr = piMsg->GetStream(&pStream);
pStream->put_type(adTypeBinary);
//.. then use pStream->Read() to read the bytes of the message
// and copy to an .eml file in the pickup directory.
...
}