繁体   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