我有一个应用程序,我正在创建一个电子邮件,我希望在同一个盒子上提供SMTP服务器(IIS)(操作系统是2003 Server 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.
...
}
答案 0 :(得分:0)
是的,显然有一个限制,虽然MS不会给出该限制的严格规定。他们只说对GetStream()的调用在调用realloc时失败。重新分配越来越多的内存,直到它达到某种人为限制。
这发生在2003服务器以及2008年的32位和64位。只有解决方法是使用CDO以外的东西来发送邮件。