简体   繁体   English

为 email - EWS c# 上的后续文本设置自定义消息

[英]Set custom message for Follow-up text on email - EWS c#

I have developed an engine to automatically process the emails sent to a particular mailbox using EWS (Exchange Web Services) Push Subscription.我开发了一个引擎来自动处理使用 EWS(Exchange Web 服务)推送订阅发送到特定邮箱的电子邮件。 Everything is working fine except, I need to set the follow-up flag text with some custom message like we do in outlook (screen-shots below):一切正常,除了我需要使用一些自定义消息设置后续标志文本,就像我们在 outlook 中所做的那样(下面的屏幕截图):

Custom text :自定义文本

在此处输入图像描述

Sample email after setting the flag text:设置标志文本后的示例 email:

在此处输入图像描述

I am using below code to do that, however the text is not displayed on email, only dates are reflecting with below code:我正在使用下面的代码来做到这一点,但是 email 上没有显示文本,只有日期反映在下面的代码中:

    public bool MoveToFolder(EmailMessage mail, string folderName, bool MarkForFollowUp, string FollowUpText)
    {
        try
        {
            var folderView = new FolderView(100);
            if (MarkForFollowUp)
            {
                try
                {
                    ExtendedPropertyDefinition followUpTextFlag = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "ChangeDetails", MapiPropertyType.String);
                    Flag flag = new Flag();
                    flag.FlagStatus = ItemFlagStatus.Flagged;
                    flag.StartDate = DateTime.Now;
                    flag.DueDate = DateTime.Now.AddHours(1);
                    mail.Flag = flag;

                    workLog.WriteVerbose($"Setting flag with followup-text: {FollowUpText}", "Notify.cs > MoveToFolder()");
                    mail.SetExtendedProperty(followUpTextFlag, FollowUpText);
                    mail.Update(ConflictResolutionMode.AutoResolve);
                    workLog.WriteVerbose($"Message follow-up flag set successfully.", "Notify.cs > MoveToFolder()");
                }
                catch (Exception ex)
                {
                    // Ignore error while settings the flag
                    workLog.WriteVerbose($"Error occurred while setting the follow-up flag. Reason: {ex.Message}", "Notify.cs > MoveToFolder()");
                }
            }

            folderView.PropertySet = new PropertySet(BasePropertySet.IdOnly);
            folderView.PropertySet.Add(FolderSchema.DisplayName);
            folderView.Traversal = FolderTraversal.Deep;

            FindFoldersResults findFolderResults = _service.FindFolders(WellKnownFolderName.Root, folderView);
            if (findFolderResults == default(FindFoldersResults))
            {
                return false;
            }

            try
            {
                FolderId folderId = findFolderResults.Cast<Folder>().FirstOrDefault(Folder => Folder.DisplayName == folderName).Id;
                mail.Move(folderId);
                return true;
            }
            catch
            {
                return false;
            }
        }
        catch (Exception)
        {
            return false;
        }
    }

You need to set the PidLidFlagRequest extended property https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/pidlidflagrequest-canonical-property with the text you want to show eg您需要使用要显示的文本设置 PidLidFlagRequest 扩展属性https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/pidlidflagrequest-canonical-property

        ExtendedPropertyDefinition followUpTextFlag = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "ChangeDetails", MapiPropertyType.String);

        ExtendedPropertyDefinition PidLidFlagRequest = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, 0x8530, MapiPropertyType.String);
        ExtendedPropertyDefinition PidLidFlagString = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, 0x85C0, MapiPropertyType.Integer);

        Flag flag = new Flag();
        flag.FlagStatus = ItemFlagStatus.Flagged;
        flag.StartDate = DateTime.Now;
        flag.DueDate = DateTime.Now.AddHours(1);
        mail.Flag = flag;
        mail.SetExtendedProperty(PidLidFlagRequest, "PidFlag Blah Blah");
        mail.SetExtendedProperty(PidLidFlagString, 0);
        mail.SetExtendedProperty(followUpTextFlag, "Blah Balh");
        mail.Update(ConflictResolutionMode.AutoResolve);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM