Ограничение размера сообщения с CDO? - PullRequest
0 голосов
/ 08 августа 2011

У меня есть приложение, в котором я создаю электронное письмо, которое я хочу, чтобы 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.

    ...

  }

1 Ответ

0 голосов
/ 30 августа 2011

Да, очевидно, есть предел, хотя MS не даст жестких и быстрых правил для того, что это за предел.Они только говорят, что вызов GetStream () завершается неудачно при вызове realloc.Все больше и больше памяти перераспределяется, пока не достигнет некоторого искусственного предела.

Это происходит на сервере 2003, а также в 2008 году как в 32, так и в 64-разрядных системах.Только обходные пути - использовать что-то кроме CDO для отправки вашей почты.

...