В настоящее время я создаю плагин Outlook для добавления предопределенного текста всякий раз, когда пользователь создает новое письмо ИЛИ Ответить ИЛИ Ответить всем на почтовое сообщение.
Я воспользовался учебными пособиями Microsoft и создал этот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
using System.Windows.Forms;
namespace VSTO_Outlook_fetch_New_Rely_Reply_All_events
{
public partial class ThisAddIn
{
private Outlook.Application _application = null;
Outlook.Inspectors inspectors;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
_application = Globals.ThisAddIn.Application;
_application.ItemLoad += new Outlook.ApplicationEvents_11_ItemLoadEventHandler(_application_ItemLoad);
inspectors = this.Application.Inspectors;
inspectors.NewInspector +=
new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
// Note: Outlook no longer raises this event. If you have code that
// must run when Outlook shuts down, see https://go.microsoft.com/fwlink/?LinkId=506785
}
Outlook.MailItem mi = null;
private void GenerateItemMessage(object item, string operation)
{
mi = item as Outlook.MailItem;
MessageBox.Show(String.Format("MailItem {0} : ", operation));
MessageBox.Show(String.Format("To : {0}", mi.To));
mi.Body = "Hi \n" + mi.Body;
}
private void ThisAddIn_ReplyAll(object item, ref bool cancel)
{
GenerateItemMessage(item, "ReplyToAll");
}
private void ThisAddIn_Reply(object item, ref bool cancel)
{
GenerateItemMessage(item, "Reply");
}
Outlook.ItemEvents_10_Event _item;
private void _application_ItemLoad(object Item)
{
_item = (Outlook.ItemEvents_10_Event)Item;
_item.ReplyAll += new Outlook.ItemEvents_10_ReplyAllEventHandler(ThisAddIn_ReplyAll);
_item.Reply += new Outlook.ItemEvents_10_ReplyEventHandler(ThisAddIn_Reply);
}
void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
{
Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
if (mailItem != null)
{
if (mailItem.EntryID == null)
{
mailItem.Body = "This text was added by using code";
}
}
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
- Проблемы здесь заключаются в том, что при ответе / ответе на все события запускается текст, который вставляется в тело письма, на которое я отвечаю (а не в новое тело письма, которое должно быть отправлено).
- И текст вставляется в конце тела (после подписи). Я хочу, чтобы это было в начале новой почты / ответа.
Кто-нибудь может мне помочь, пожалуйста? Кроме того, как я могу улучшить этот код?