DynamicsCRM2011ソリューションで電子メールテンプレートを編集したい。
フォームにコンボボックスを追加して、ユーザーがメールの分類を決定できるようにします。「A」、「B」または「C」
これにより、メールゲートウェイは、アーカイブなどに関して特定のメールをどう処理するかを知ることができます。また、ヘッダーを設定すると、ユーザー(受信者)が分類を解除(分類を下げる)するのが難しくなります。これは、分類を押し込んだだけで簡単に実行できます。件名に(はい、私たちはまだコピーアンドペーストに対して脆弱であることを理解していますが、クライアントにそのことを伝えてみてください)。
メールが送信される直前に、メールアイテムを取得してメールヘッダーを追加したり、件名やその他の編集可能なフィールドなどを操作したりできるイベントがあります。
送信時にこのコードを実行するOutlookアドインを作成しましたが、基本的に、Dynamicsのどこに同様のコードを配置する必要があるかを知りたいと思います。
private Dictionary<string, List<string>> _classifications;
private const string ProtectiveMarkingSchemaName = "http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/X-Protective-Marking";
private const string Version = "0.1";
private const string Namespace = "xyz.com";
void ApplicationItemSend(object item, ref bool cancel)
{
// GUARD
if (!(item is MailItem)) return;
if (ClassificationDropDown.SelectedItem == null ||
String.IsNullOrEmpty(ClassificationDropDown.SelectedItem.Label))
{
cancel = true;
return;
}
// CURRENT ITEM
var mailItem = (MailItem)Globals.ThisAddIn.Application.ActiveInspector().CurrentItem;
// PREPARE MARKING
var origin =
Globals.ThisAddIn.Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
var classification = new StringBuilder();
classification.AppendFormat("SEC={0}", ClassificationDropDown.SelectedItem.Label);
if (DisseminationDropDown.SelectedItem != null)
{
if (!String.IsNullOrEmpty(DisseminationDropDown.SelectedItem.Label))
{
var cat = DisseminationDropDown.SelectedItem.Label;
classification.AppendFormat(", CAVEAT={0}", cat);
}
}
// FILTHY HACK
if (mailItem.Subject == null)
{
mailItem.Subject = " ";
}
// FIND OLD MARKINGS
var start = mailItem.Subject.IndexOf('[');
var end = mailItem.Subject.LastIndexOf(']');
if (end - start > 0)
mailItem.Subject = mailItem.Subject.Remove(start, (end - start) + 1);
// APPLY MARKING
mailItem.Subject = String.Format("{0} [{1}]", mailItem.Subject.TrimEnd(), classification);
mailItem.PropertyAccessor.SetProperty(
ProtectiveMarkingSchemaName,
String.Format("[VER={0}, NS={1}, {2}, ORIGIN={3}]", Version, Namespace, classification, origin));
}