我有一个应用程序,我在其中创建了一封电子邮件,我希望同一个盒子上的 SMTP 服务器 (IIS) 传送(操作系统是 2003 Server 32 位)。我使用“cdSendUsingPickup”方法发送这个。
使用我的 IMessage 界面,我将消息复制到服务器拾取目录。只要我的消息低于~150MB,一切都很好。大小由邮件的附件决定。但是,如果我包含超过此限制的附件,IMessage::GetStream() 将失败并显示 0x8007000e - 没有足够的存储空间来完成此操作。服务器有足够的高清空间。我遇到了某种空间限制,我认为这更多是内存限制,而不是 HD 空间问题,但我没有找到关于发生了什么的线索。下面的伪代码 - 对 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.
...
}