题
我需要读的前景。消息文件。净 没有 使用COM API for Outlook(因为这将不会安装的机器上,我的应用程序将运行)。是否有任何免费的第3次缔约方图书馆这么做吗?我要提取、CC和BCC领域。发送的接收日期段将是一件好事,如果它们还存在MSG文件。
解决方案 2
更新: 我已经找到了一个第3方COM图书馆叫 Outlook救赎 这是我的时刻。如果你用它通过COM的互操作程序。净,不要忘记释放每一个COM对象后你用它做,否则,您的应用程序的崩溃。
其他提示
有代码可用于演示阅读。消息文件但不COM.看看 在这里,.
这里的一些样本载>>>情绪使用 Outlook救赎 这Huseyint发现。
Public Sub ProcessMail()
Dim Sess As RDOSession
Dim myMsg As RDOMail
Dim myString As String
Set Sess = CreateObject("Redemption.RDOSession")
Set myMsg = Sess.GetMessageFromMsgFile("C:\TestHarness\kmail.msg")
myString = myMsg.Body
myMsg.Body = Replace(myString, "8750", "XXXX")
myMsg.Save
End Sub
微软已经记录了这样的: .消息文件的格式规范
这是一个"结构存储"的文件。我已经成功地使用 安德鲁和平的代码 阅读这些在过去,甚至下。净额(使用C++/CLI)-它的清洁和相当容易理解。基本上,你需要找出哪些记录需要,查询这些-它得到一点小小毛茸茸的,因为不同版本的前景和不同类型的信息将导致在不同的记录...
你可以试试我们的(商业) Rebex安全邮件 图书馆。它可以阅读观消息的格式。以下代码表示:
// Load message
MailMessage message = new MailMessage();
message.Load(@"c:\Temp\t\message.msg");
// show From, To and Sent date
Console.WriteLine("From: {0}", message.From);
Console.WriteLine("To: {0}", message.To);
Console.WriteLine("Sent: {0}", message.Date.LocalTime);
// find and try to parse the first 'Received' header
MailDateTime receivedDate = null;
string received = message.Headers.GetRaw("Received");
if (received != null)
{
int lastSemicolon = received.LastIndexOf(';');
if (lastSemicolon >= 0)
{
string rawDate = received.Substring(lastSemicolon + 1);
MimeHeader header = new MimeHeader("Date", rawDate);
receivedDate = header.Value as MailDateTime;
}
}
// display the received date if available
if (receivedDate != null)
Console.WriteLine("Received: {0}", receivedDate.LocalTime);
更多信息在发送和接收日期和他们是如何表示该信息可以发现在 http://forum.rebex.net/questions/816/extract-senttime-receivetime-and-time-zones
如果你打开.消息文件在文本编辑器,我相信你会找到的信息后被储存作为纯文本的内部文件。(它上的所有消息,我已经检查至少)
这将是很容易编写一些代码分析的文件,寻找行开头的"自:"或":"等等。然后提取你需要的信息。
如果你需要身体的电子邮件,这可能是一个比较复杂一点。