2011-03-04 6 views
0

C#의 Redemption-Data-Objects를 사용하여 새 전자 메일 메시지를 만들었습니다. Display()를 호출하면 창이 열립니다.C에서 보너스를 사용하여 표시된 전자 메일을 보낼 수 없습니다.

"보내기"버튼을 클릭하여 메시지를 보내려고하면 다음 메시지 중 하나가 나타납니다 (독일어 번역 ...). "메시징 인터페이스가 알 수없는 오류를 반환했습니다. 다시 시작하십시오. 문제는 .... "또는"요소를 보낼 수 없습니다! "

Send-Method를 사용하면 정상적으로 작동하며 전자 메일이 전송됩니다.

해결책을 찾기 위해 OutlookSpy를 시도했습니다. 메시지를 보내려고하면 리턴 코드 0x80020009가 표시됩니다.

Redemption.RDOSession session = new Redemption.RDOSession(); 
session.Logon(null, null, false, null, null, null); 
Redemption.RDOFolder folder = session.GetDefaultFolder(Redemption.rdoDefaultFolders.olFolderOutbox); 
Redemption.RDOMail newMail = folder.Items.Add(Redemption.rdoItemType.olMailItem); 

// no difference when using .Add 
newMail.Recipients.AddEx("[email protected]","[email protected]", "SMTP", Redemption.rdoMailRecipientType.olTo); 
newMail.Recipients.ResolveAll(); 
newMail.Subject = "Testmail-Subject"; 
newMail.HTMLBody = "Test"; 
newMail.Display(false, Type.Missing); 

아무도 그 문제에 대한 해결책을 알고 있나요 : 여기

는 샘플 코드?

관련 마틴

PS : 나는) (영어 Windows 7에서 오피스 2010 (독일어) 내 프로젝트의 대상 프레임 워크 2.0과 비주얼 스튜디오 2010 (영어))를 사용하고 있습니다.

답변

0

OK ...

"오류"를 발견했습니다.

내 세션이 범위를 벗어났기 때문에 컨텍스트가 손실되어 오류가 발생했습니다.

// Event object to wait for 
System.Threading.ManualResetEvent _manualEvent = new ManualResetEvent(false); 

private void DisplayMail() { 
    ... 
    // register an eventhandler for the close event 
    _newMail.OnClose += new Redemption.IRDOMailEvents_OnCloseEventHandler(_newMail_OnClose); 

    _newMail.Recipients.Add(txtTo); 
    _newMail.Recipients.ResolveAll(); 
    _newMail.Subject = subject; 
    _newMail.HTMLBody = body; 

    _newMail.Display(false, null); 
    // wait here until the message-window is closed... 
    _manualEvent.WaitOne(); 
} 

private void _newMail_OnClose() 
{ 
    _manualEvent.Set(); 
} 
: 여기

이 해결책
관련 문제