簡體   English   中英

Outlook for Office365 在發送前向用戶顯示消息

[英]Outlook for Office365 Display Message to User Before Sending

我以前使用以下代碼和參考來創建給用戶的電子郵件,並在發送之前彈出 outlook 消息 window 以允許用戶在發送之前對 email 進行更改...

參考

using Outlook = Microsoft.Office.Interop.Outlook; //v15.0.0.0

片段

public static void SendEmail(string To, string CC, string Subject, string Body)
{
    Outlook.Application app = new Outlook.Application();
    Outlook.MailItem mail = (Outlook.MailItem)app.CreateItem(Outlook.OlItemType.olMailItem);
    
    mail.Subject = Subject;
    mail.To = To;
    mail.CC = CC;
    mail.Body = Body;
    mail.Subject = Subject;
    
    if (DisplayToUser) { mail.Display(true); } //<< Important
    else { mail.Send(); }
}

最近在一些公司更新(升級 Outlook)之后,此代碼不再有效。 我收到以下錯誤:

System.InvalidCastException: Unable to cast COM object of type 'Microsoft.Office.Interop.Outlook.ApplicationClass' to interface type 'Microsoft.Office.Interop.Outlook._Application'. 此操作失敗,因為對 IID 為“{00063001-0000-0000-C000-000000000046}”的接口的 COM 組件的 QueryInterface 調用因以下錯誤而失敗:找不到元素。 (來自 HRESULT 的異常:0x8002802B (TYPE_E_ELEMENTNOTFOUND))。 at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease) at Microsoft.Office.Interop.Outlook.ApplicationClass.CreateItem(OlItemType ItemType) at MyCompany.MyApp.Classes.Email.SendEmail(String To , String CC, String Subject, String Body, Boolean DisplayToUser, Boolean CcUser) in C:_data\MyCompany.MyApp\SourceCode-Dev\MyCompany.MyApp\Classes\Email.cs:line 17 at MyCompany.MyApp.Forms.FrmAbout. btnCommunicate_Click(Object sender, EventArgs e)......

I've googled around and found plenty of examples of how to send an SMTP email through outlook but, none that seem to let me hook into the Outlook application itself to present an email to the user as I have previously done.

我還在 Microsoft.Office365.OutlookServices NuGet package 中進行了挖掘,但沒有找到類似的功能。

我從代碼發送電子郵件沒有問題,問題是無法使用他們安裝的 outlook 應用程序向用戶顯示 outlook 消息 window 給用戶。

知道這個功能是否仍然存在,如果存在,在哪個庫中找到它,或者如何取回它?

謝謝

看來您只需要更正代碼中的聲明部分:

public static void SendEmail(string To, string CC, string Subject, string Body)
{
    Outlook._Application app = new Outlook._Application();
    Outlook.MailItem mail = (Outlook.MailItem)app.CreateItem(Outlook.OlItemType.olMailItem);
    
    mail.Subject = Subject;
    mail.To = To;
    mail.CC = CC;
    mail.Body = Body;
    mail.Subject = Subject;
    
    if (DisplayToUser) { mail.Display(true); } //<< Important
    else { mail.Send(); }
}

如果問題仍然存在,請嘗試修復您的 Office/Outlook 安裝。 似乎所需的 windows 注冊表記錄已損壞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM