我需要读的前景。消息文件。净 没有 使用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

如果你打开.消息文件在文本编辑器,我相信你会找到的信息后被储存作为纯文本的内部文件。(它上的所有消息,我已经检查至少)

这将是很容易编写一些代码分析的文件,寻找行开头的"自:"或":"等等。然后提取你需要的信息。

如果你需要身体的电子邮件,这可能是一个比较复杂一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top