У меня есть надстройка VSTO Outlook 2016, на которой установлен только флажок.
Сценарий: При ответе на электронное письмо необходимо установить флажок.После отправки электронного письма я добавляю текст «mailItem.FlagRequest» в электронное письмо с надписью «Это электронное письмо является ответом по разрешению для дела».Когда отправленное электронное письмо открывается из Отправленных элементов Outlook, флажок должен оставаться установленным.
Проблема: При отправке электронного письма с установленным флажком, если я открываю письмо из Отправленных элементов- Я вижу флажок проверяется в первый раз в одиночку.Если я закрою письмо и открою снова, флажок снят.
Я пытался явно установить флажок, но он не будет проверен.
Код ссылки здесь:
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 OutlookAddIn5
{
public partial class ThisAddIn
{
private Outlook.Inspectors _appInspectors;
ThisRibbonCollection ribbonCollection;
private Outlook.Explorer explorer;
private Outlook.Application app;
private Outlook.MailItem mailItem;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
explorer = this.Application.ActiveExplorer();
app = (Outlook.Application)explorer.Application;
_appInspectors = app.Inspectors;
_appInspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
this.Application.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
}
void Application_ItemSend(object Item, ref bool Cancel)
{
ThisRibbonCollection ribbonCollection;
ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];
if (ribbonCollection.Ribbon1.checkBox1.Checked)
{
Outlook.MailItem mi = Item as Outlook.MailItem;
mi.FlagRequest = "This email is a resolution response for the case";
mi.Save();
}
}
void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
{
mailItem = Inspector.CurrentItem as Outlook.MailItem;
ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];
if (!string.IsNullOrEmpty(mailItem.FlagRequest) && mailItem.FlagRequest.Contains("This email is a resolution response for the case"))
{
ribbonCollection.Ribbon1.checkBox1.Checked = true;
ribbonCollection.Ribbon1.checkBox1.Enabled = false;
ribbonCollection.Ribbon1.checkBox1.Visible = true;
}
else
{
// Globals.Ribbons.Ribbon1.checkBox1.Visible = false;
ribbonCollection.Ribbon1.checkBox1.Checked = false;
ribbonCollection.Ribbon1.checkBox1.Enabled = true;
ribbonCollection.Ribbon1.checkBox1.Visible = false;
}
}
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 http://go.microsoft.com/fwlink/?LinkId=506785
}
#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
}
}