2011-03-04 24 views
0

我使用C#中的Redemption-Data-Objects創建了一封新的電子郵件消息。調用Display()後,窗口打開 - 看起來很棒。使用C#中的兌換功能無法發送顯示的電子郵件#

當我嘗試發送消息時,通過單擊「發送」按鈕,我收到以下消息之一(從德語翻譯...):「消息接口返回一個未知錯誤,嘗試重新啓動前景如果問題....「或」元素不能發送!「

當我使用發送方法,一切正常,電子郵件將被髮送。

我試過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(英文)使用的Office 2010(德國)在我的項目中的Visual Studio 2010(英文)與目標框架2.0)。

回答

0

好的......

我發現了「錯誤」。

因爲我的會話超出範圍,上下文丟失,所以發生錯誤。

這裏是解決方案:

// 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(); 
} 
相關問題