2011-08-08 5 views
0

동일한 상자에 SMTP 서버 (IIS)를 제공하려는 전자 메일을 만듭니다 (OS는 2003 Server 32 비트). 나는 이것을 "cdSendUsingPickup"메소드를 사용하여 보냅니다.CDO의 메시지 크기 제한?

내 IMessage 인터페이스를 사용하여 메시지를 서버 pickup 디렉토리에 복사합니다. 내 메시지가 ~ 150MB 미만이면 모든 작품이 훌륭합니다. 크기는 메일 첨부 파일에 의해 계산됩니다. 그러나이 제한을 초과하는 첨부 파일을 포함하면 IMessage :: GetStream()이 0x8007000e와 함께 실패합니다. 저장소 공간이 부족하여이 작업을 완료 할 수 없습니다. 서버에는 충분한 HD 공간이 있습니다. 나는 어떤 종류의 공간 제한에 부딪 히고있다. 그리고 나는 그것이 더 많은 메모리 제한이 아니라, 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. 

    ... 

    } 
+1

사용자가 150MB + 전자 메일을 열어 볼 것으로 기대합니까? 전자 메일을 자동 전송으로 사용하려고합니까? – Lankymart

+0

그 고객이 원했던 것. –

답변

0

예 제한적으로 MS는 제한이 무엇인지에 대해 엄격하고 빠른 규칙을 제공하지는 않지만 명백하게 한계가 있습니다. 그들은 GetStream()에 대한 호출이 realloc에 ​​대한 호출에서 실패했다고 말합니다. 약간의 인위적인 한계를 넘을 때까지 점점 더 많은 메모리가 재 할당됩니다.

이는 2003 년 서버뿐만 아니라 2008 년 32 비트와 64 비트에서 발생합니다. 해결 방법은 CDO 이외의 것을 사용하여 메일을 보내는 것입니다.

+0

당신은 합창단에게 설교하고 있습니다. 나는 우스꽝 스럽다는 것을 알고 있습니다, 당신은 그것이 뻔뻔 ​​스럽다는 것을 알고 있습니다 - 고객은 동의하지 않습니다. 그리고 어떤 바보가 그들에게 약속했습니다. –

+0

바보는 나 아니야. by, 다른 이메일 솔루션이 이것을 해결하기 위해 사용되었습니다. –

+0

Understood는 이것을 잠재적 인 해결책으로 생각하는 사람에게 명확하게 알리고 싶습니다. 이는 좋은 생각이 아닙니다. 나는 당신의 고통을 이해합니다. – Lankymart