如何通过自定义发送按钮调用内嵌回复邮件的Send方法?
Outlook内嵌回复邮件自动发送后的窗口关闭问题
背景
找到其他用户的类似提问,该问题已有解答,但对应答案页面已失效。
尝试操作
已在Inspector Activate事件中调用Item.Send方法,同时在New Inspector事件中调用Activate方法。但邮件窗口无法自动关闭,必须点击任务栏上的窗口图标使其获得焦点后,窗口才会消失。
代码实现
void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) { Base objBase = new Base(); dynamic mailItem = objBase.GetItemObject(Inspector.CurrentItem); var inspector = Inspector as Outlook.InspectorEvents_10_Event; if (inspector != null) { inspector.Close += Inspectors_CloseInspector; } if (mailItem != null) { if (mailItem is Outlook.MailItem) { if (IsInlineItem) { _MailItem = mailItem; ((Outlook.InspectorEvents_Event)Inspector).Activate += new Outlook.InspectorEvents_ActivateEventHandler(InspectorActivate); ((Outlook.InspectorEvents_Event)Inspector).Deactivate += new Outlook.InspectorEvents_DeactivateEventHandler(InspectorDeactivate); ((Outlook.InspectorEvents_Event)Inspector).Close += new Outlook.InspectorEvents_CloseEventHandler(Inspectors_CloseInspector); Inspector.Activate(); } else if (mailItem.Sent == false) { _MailItem = mailItem; } else { Marshal.ReleaseComObject(mailItem); } } else { _MailItem = mailItem; Marshal.ReleaseComObject(mailItem); } } objBase.WriteError("new Inspector"); } private void InspectorActivate() { Base objBase = new Base(); Outlook.Inspector ActiveInspector = Application.ActiveInspector(); if (ActiveInspector != null) { dynamic selectedItem = objBase.GetItemObject(ActiveInspector.CurrentItem); if (selectedItem != null && _MailItem.Subject == selectedItem.Subject && selectedItem.Sent == false) { try { selectedItem.Send(); } catch (Exception e) { // 可在此添加异常日志记录逻辑 } finally { Marshal.ReleaseComObject(selectedItem); Marshal.ReleaseComObject(ActiveInspector); } } } }
内容的提问来源于stack exchange,提问作者Nilesh Pegasus
相关产品推荐
相关产品推荐

