スーパ*_*ミコン 6 email outlook metadata
我需要从Outlook msg文件中读取内容.目前我正在使用CodeProject.com项目中的一个类来完成此任务,因为在服务器上部署VSTO和Outlook不是一种选择.
除了日期信息(例如收到日期和发送日期)之外,此类从msg文件获取To,From,CC,Subject,Body和其他所需内容.
关于如何从MSDN上的msg文件中获取东西,有一些(真的,非常低级别)文档,但它有点超出了这个项目的范围,并没有提到日期.
理想情况下,我可以直接替换我现在使用的类(前面提到的CodeProject中的OutlookStorage.cs),或者能够稍微修改现有的类.要修改,我需要正确的4字符十六进制道具标识符用于接收日期.例如,主题列为,PR_SUBJECT = "0037"而正文列为PR_BOY = "1000".
小智 7
如果您正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8341 次 |
| 最近记录: |