У меня есть приложение, в котором я создаю электронное письмо, которое я хочу, чтобы SMTP-сервер (IIS) на том же ящике доставлял (ОС 2003 Server 32-битная). Я отправляю это, используя метод "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.
...
}