Email 当我通过Dynamics CRM发送电子邮件时,如何添加邮件标题

Email 当我通过Dynamics CRM发送电子邮件时,如何添加邮件标题,email,dynamics-crm-2011,email-headers,Email,Dynamics Crm 2011,Email Headers,我想在Dynamics CRM 2011解决方案中编辑电子邮件模板 我将添加一个组合框的形式,允许用户决定什么样的分类电子邮件应该是,如a,B或C 这有助于我们的电子邮件网关了解在存档等方面如何处理某些邮件。此外,设置标题将使用户收件人更难解密降低分类,如果我们只是将分类推到主题行中,则很容易做到这一点。是的,我知道我们仍然容易被复制和粘贴但是试着告诉我的客户 在发送电子邮件之前,有一个事件,我可以获取邮件项目并添加邮件标题,还可以处理主题行或其他可编辑字段等内容 我已经编写了一个Outlook

我想在Dynamics CRM 2011解决方案中编辑电子邮件模板

我将添加一个组合框的形式,允许用户决定什么样的分类电子邮件应该是,如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));
    }

这不是我有任何直接经验的领域,但我可以告诉你的是,在CRM SDK中通常使用的电子邮件对象是底层电子邮件消息的抽象

尽管如此,SDK暴露了一个可能有用的区域。请看SDK中名为的部分,该部分将按照您想要的方向公开内容:

电子邮件提供程序是一个可插入组件,与 Microsoft Dynamics CRM电子邮件路由器服务。提供者是 负责专门的电子邮件处理和与 电子邮件协议

也就是说,我看不到任何暴露邮件头的对象,但我没有仔细看


请注意,它会重定向到,以获取有用的内容,但这仍然有效且受支持。

这不是我有任何直接经验的领域,但我可以告诉您的是,CRM SDK中通常使用的电子邮件对象是底层电子邮件的抽象

尽管如此,SDK暴露了一个可能有用的区域。请看SDK中名为的部分,该部分将按照您想要的方向公开内容:

电子邮件提供程序是一个可插入组件,与 Microsoft Dynamics CRM电子邮件路由器服务。提供者是 负责专门的电子邮件处理和与 电子邮件协议

也就是说,我看不到任何暴露邮件头的对象,但我没有仔细看


请注意,它会重定向到,以获取有用的内容,但这仍然有效且受支持。

我目前有一张与Microsoft的联系单,但他们最初的反应是,这无法完成

他们建议的解决方案是使用邮件网关上的规则来添加标题信息,如果我只想写入相同的标题信息,这就解决了这个问题,但是如果我想在标题中添加变量值,这就变得更复杂了

我看了格雷格的建议,虽然它们对我来说是一个很好的学习练习,但我在那里找不到解决办法

可以编写一个这样做的工作流,但我必须考虑CRM在发送邮件时所做的所有其他垃圾邮件,坦率地说,文档有点粗略地描述了我需要做什么,但我最好的猜测是这样的

使用功能区编辑器隐藏原始的“发送”按钮 将下拉列表添加到包含选项的电子邮件表单 使用javascript添加新的发送按钮,以启动工作流 编写一个接收电子邮件的工作流,查找标题值字段并将其塞进标题中 然后发送它。
我不知道这是否会自动关闭活动,或者它是否会保留其上下文,例如案例中的活动、帐户等,或者此方法是否会影响审计,因此可能必须对这些事情进行解释

目前我与Microsoft有联系,但他们最初的反应是无法做到这一点

他们建议的解决方案是使用邮件网关上的规则来添加标题信息,如果我只想写入相同的标题信息,这就解决了这个问题,但是如果我想在标题中添加变量值,这就变得更复杂了

我看了格雷格的建议,虽然它们对我来说是一个很好的学习练习,但我在那里找不到解决办法

可以编写一个这样做的工作流,但我必须考虑CRM在发送邮件时所做的所有其他垃圾邮件,坦率地说,文档有点粗略地描述了我需要做什么,但我最好的猜测是这样的

使用功能区编辑器隐藏原始的“发送”按钮 将下拉列表添加到包含选项的电子邮件表单 使用javascript添加新的发送按钮,以启动工作流 编写一个接收电子邮件的工作流,查找标题值字段并将其塞进标题中 然后发送它。 我不知道这是否会自动关闭活动,或者它是否保留其上下文,例如活动I
n案例、账目等,或者如果该方法影响审计,则可能必须考虑这些问题

很遗憾,我有一个非常类似的问题,因此我向具有较高代表性的人寻求建议。。。我必须向发件人和ReplyTo标题添加一些值。您曾经使用SDK访问过标题吗?我打赌你最后使用了一些JavaScript…唯一的方法是如果你使用CRM for outlook插件,并且你还有一个outlook插件来处理邮件标题。否则你必须在邮件网关上完成。天哪。。。这件事变得越来越难。。。谢谢斯佩特,你好!我对Dynamics 365 online有问题。我需要设置发送给外部收件人时电子邮件的标题。难道你不知道在我的情况下该怎么做吗?不,对不起,我已经多年没有在CRM工作了。我希望编辑邮件网关中的标题是你能做的一切。我有一个非常类似的问题,所以我寻求更高代表性的人的建议。。。我必须向发件人和ReplyTo标题添加一些值。您曾经使用SDK访问过标题吗?我打赌你最后使用了一些JavaScript…唯一的方法是如果你使用CRM for outlook插件,并且你还有一个outlook插件来处理邮件标题。否则你必须在邮件网关上完成。天哪。。。这件事变得越来越难。。。谢谢斯佩特,你好!我对Dynamics 365 online有问题。我需要设置发送给外部收件人时电子邮件的标题。难道你不知道在我的情况下该怎么做吗?不,对不起,我已经多年没有在CRM工作了。我希望在邮件网关中编辑邮件头就是您所能做的一切