使用c#提取电子邮件内容

Gan*_*Deo 3 .net c# email

我有一个包含电子邮件的文件.我想知道.net中是否有任何内置的库或类可以让我直接提取这样的电子邮件内容

库lx =新库("email_file");

Console.writeline(lx.From());

Console.writeline(lx.To());

file attachment = lx.attachment();

我编写了一个程序,可以通过使用正则表达式扫描包含电子邮件的文件并从电子邮件中提取单个字段来执行这些任务,例如:To,From,Attachment等,但是,要求是使用一些内置库或类提取这些内容.

任何帮助将不胜感激

Mar*_*obr 5

没有直接支持在.NET中阅读电子邮件.你必须自己破解(一两天之后你可能能够处理95%的正常eml电子邮件,经过几个月的努力,你将能够处理剩余的5%).完整的电子邮件解析意味着正确处理国际字符,附件,几种编码方案,附件,作为附件发送的电子邮件,加密和签名的电子邮件,以便能够处理流行电子邮件客户端的常见错误等...

有两种常见的电子邮件文件格式:

EML 基于文本的格式,可以在*nix和windows中找到.Outlook Express和Thunderbird客户端可以以eml格式读/写消息.如果您使用PickupDirectory使用.NET的SmtpClient发送电子邮件,则将使用此格式.EML格式在RFC 2045,2046,2047,2048,2049,2822中规定.

您可以找到许多用于读取eml文件的第三方组件.以下代码使用我们的Rebex安全邮件(但随时谷歌自己).

using Rebex.Mail;
using Rebex.Mime.Headers;

// create an instance of MailMessage  
MailMessage message = new MailMessage();

// load the message from a local disk file  
message.Load("c:\\message.eml");

Console.Write(message.From);
Console.Write(message.To)
foreach (Attachment attachment in message.Attachments)
{
    // Save the file 
    Console.WriteLine ("Saving '{0}' ({1}).", 
     attachment.FileName, attachment.MediaType);
    attachment.Save (attachment.FileName);
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里下载试用版.

Outlook使用的MSG二进制格式.微软最近发布了它的规范.有一个带有c#库的codeproject文章应该能够读取它.还有一些第三方商业组件,但我没有亲自尝试过.