消息大小限制与CDO



我有一个应用程序,我正在创建一个电子邮件,我希望SMTP服务器(IIS)在同一盒子上交付(操作系统是2003服务器32位)。我使用"cdSendUsingPickup"方法发送。

使用我的IMessage接口,我将消息复制到服务器拾取目录。只要我的消息小于150MB,所有工作都很好。大小由邮件的附件计算。但是,如果我包含超过此限制的附件,IMessage::GetStream()会以0x8007000e失败-没有足够的存储空间可用来完成此操作。服务器有足够的高清空间。我遇到了某种空间限制,我认为这更多的是内存限制,而不是高清空间问题,但我找不到发生了什么事的线索。下面的伪代码-调用GetStream失败的消息大于150MB左右。

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.
    ...
  }

显然有一个限制,尽管微软不会给出这个限制的硬性规定。它们只说在调用realloc时对GetStream()的调用失败。越来越多的内存被重新分配,直到达到人为的限制。

这发生在2003年的服务器和2008年的32位和64位服务器上。唯一的解决办法是使用CDO以外的东西来发送邮件。

相关内容

  • 没有找到相关文章

最新更新