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

标签 c# .net email

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

库 lx= 新库("email_file");

Console.writeline(lx.From());

控制台.writeline(lx.To());

文件附件=lx.attachment();

我编写了一个程序,它通过使用正则表达式扫描包含电子邮件消息的文件并从电子邮件中提取单个字段来完成这些任务,例如:收件人、发件人、附件等。 但是,要求是使用一些内置的库或类来提取这些东西。

任何帮助将不胜感激

最佳答案

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

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

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

您可以找到大量用于读取 eml 文件的第三方组件。以下代码使用我们的 Rebex Secure Mail (但请随意谷歌你自己的)。

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);
}

您可以 download trial here .

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

关于c# - 使用c#提取电子邮件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3159014/

相关文章:

C#显式声明成员接口(interface)

.net - 无法以编程方式展开分配给 TreeView 的 TreeNode

GMail 不显示 Laravel MailGun 驱动程序发送的 HTML 电子邮件

.net - 为我的脚本语言切换到 DLR 的主要优势是什么?

html - 类未加载

javascript - 使用 JavaScript 和 PHP 发送电子邮件

c# - 在 while 循环期间文件正在被另一个进程使用 (C#)

c# - 使用EF CodeFirst,如何在创建对象时指定ID?

c# - 读取\写入文件: heavily used application的正确方法

c# - 在数字之后的 NumericUpDown 控件中包含文本