gpt4 book ai didi

outlook - 如何在没有 Outlook API 的情况下从 Outlook MSG 文件中读取接收日期?

转载 作者:行者123 更新时间:2023-12-04 13:55:53 26 4
gpt4 key购买 nike

我需要从 Outlook msg 文件中读取内容。目前我正在使用来自 CodeProject.com 的类(class)项目来实现这一点,因为在服务器上部署 VSTO 和 Outlook 不是一种选择。

此类从 msg 文件中获取 To、From、CC、Subject、Body 以及我需要的所有其他信息,但日期信息(例如接收日期和发送日期)除外。

有一些(真的,非常低级)documentation关于如何从 MSDN 上的 msg 文件中获取内容,但这有点超出了本项目的范围,并且根本没有提及日期。

理想情况下,我可以直接替换我现在使用的类(前面提到的 CodeProject 中的 OutlookStorage.cs),或者能够稍微修改现有类。要修改,我需要接收日期的正确 4 个字符的十六进制 Prop 标识符。例如,主题被列为 PR_SUBJECT = "0037"和 Body 被列为 PR_BOY = "1000" .

最佳答案

如果您使用的是 CodeProject 中的 OutlookStorage.cs,请添加以下内容:

private const string PR_RECEIVED_DATE="007D";
private const string PR_RECEIVED_DATE_2 = "0047";

...

/// <summary>
/// Gets the date the message was received.
/// </summary>
public DateTime ReceivedDate
{
get
{
if (_dateRevieved == DateTime.MinValue)
{
string dateMess = this.GetMapiPropertyString(OutlookStorage.PR_RECEIVED_DATE);
if (String.IsNullOrEmpty(dateMess))
{
dateMess = this.GetMapiPropertyString(OutlookStorage.PR_RECEIVED_DATE_2);
}
_dateRevieved = ExtractDate(dateMess);
}
return _dateRevieved;
//return ExtractDate(dateMess);
}
}

private DateTime _dateRevieved = DateTime.MinValue;

private DateTime ExtractDate(string dateMess)
{
string matchStr = "Date:";

string[] lines = dateMess.Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in lines)
{
if (line.StartsWith(matchStr))
{
string dateStr = line.Substring(matchStr.Length);
DateTime response;
if (DateTime.TryParse(dateStr, out response))
{
return response;
}
}
}
return DateTime.MinValue;
}

关于outlook - 如何在没有 Outlook API 的情况下从 Outlook MSG 文件中读取接收日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com