【问题标题】:Get first and last name in VSTO C#在 VSTO C# 中获取名字和姓氏
【发布时间】:2021-01-04 00:35:56
【问题描述】:

在执行回复/回复所有操作时,我必须分别获取第一个收件人的名字和姓氏。

目前,我正在这样做:

                    #region Extracting Last and First Name

                    string LName = null;
                    string FName = null;

                    if (mailItem.Recipients[1].AddressEntry.GetExchangeUser() == null)
                    {
                        FName = FirstName(mailItem.Recipients[1].Name);
                        LName = LastName(mailItem.Recipients[1].Name);
                    }
                    else
                    {
                        FName = mailItem.Recipients[1].AddressEntry.GetExchangeUser().FirstName;
                        LName = mailItem.Recipients[1].AddressEntry.GetExchangeUser().LastName;
                    }

                    #endregion

[注意:在上述区域中,FirstName(string name) 和 LastName(string name) 方法用空格分割名称并分别返回第一个和最后一个元素]

但是,对于某些收件人,它会返回整个电子邮件地址。 :(

在探索 Outlook 之后,我发现上面的代码正在获取“显示为”字段(在联系人窗口内,请参见下图),并对其执行操作,这不是提取名字和姓氏的正确方法。

在“检查全名”窗口中,我正确分离了所有详细信息(参见下图),这是实际要求。

那么,如何从“检查全名”窗口中获取“First”和“Last”的值?还是我们有更好的方法来做到这一点?

参考这张图片:

【问题讨论】:

    标签: c# outlook vsto outlook-addin add-in


    【解决方案1】:

    首先,您访问mailItem.Recipients[1].AddressEntry.GetExchangeUser() 三次(!!!)。只做一次——那行代码每次都会检索 6 个(!!!)全新的 COM 对象。

    其次,如果收件人是联系人而不是 GAL 用户,请使用 AddressEntry.GetContact()(请只使用一次)- 拥有 ContactItem 对象后,您可以使用其 FirstNameLastName 属性.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 2017-06-30
      • 2016-02-22
      • 1970-01-01
      • 2019-01-06
      相关资源
      最近更新 更多