【问题标题】:Outlook .MSG file contains to many recipients then To property gets blank return nullOutlook .MSG 文件包含许多收件人,然后 To 属性变为空白返回 null
【发布时间】:2019-06-18 00:56:08
【问题描述】:

当尝试使用 dll Microsoft.Office.Interop.Outlook 版本 15.0.0.0 读取 .Net 中的 .msg 文件时,在读取大型收件人时遇到问题。

场景:

  1. 如果 .msg 文件包含较少的收件人,例如少于 300 个,则 To 属性中的值显示实际收件人。
  2. 如果 .msg 文件的收件人超过 300 个,则 MailItem 对象的 To 属性将得到 null 不显示空白。

图书馆是否有任何限制收件人阅读或我缺少任何东西来处理更多收件人?

    Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
    Microsoft.Office.Interop.Outlook.Application();

    var item = app.Session.OpenSharedItem(msgfilepath) as Microsoft.Office.Interop.Outlook.MailItem;
    string message = item.Body
    string recipients = item.To   
   //This To property gets null in case file has large recipients list.

【问题讨论】:

  • 尝试遍历 Recipients 集合:stackoverflow.com/questions/28986306/…
  • @TimWilliams。是的,尝试使用 Recipients 属性并获取收件人的集合,但我的实际问题是没有在 To 属性中仅针对大型收件人获取它,
  • 如果收件人的数量很大,那么您需要遍历 Recipients 集合。就是这样,而且效果很好:如果您只想要“收件人”项目,请查看每个收件人的 Type 属性。
  • 为什么这个问题被标记为 vba 或 outlook-vba?
  • 好电话@BrakNicku。提供的代码是 C#。我更改了标签。

标签: c# .net outlook


【解决方案1】:

变化:

string recipients = item.To 

到这里:

string recipients = string.Join(";", item.Recipients);

结果将是一个相同的以分号分隔的字符串,但第二个始终有效。

官方文档没有谈到 .To 属性的限制,但它确实告诉您使用 Recipients: https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.outlook._mailitem.to

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多