2016-12-22 20 views
1

我满足的主要要求是在数百万旧的邮件的阅读并将其发布到我们的正常存档的新系统。任务本身是读取.eml文件,并添加新的BCC电子邮件地址,然后将新的电子邮件文件拖放到其路由到智能主机,然后存档的电子邮件没有它进入现实世界中特定的SMTP服务器。C#.EML新地址重发 - 日期发行

的问题是,当我打电话。发送()方法,该日期戳是当前日期,而不是原来的电子邮件的日期。我曾尝试使用Smtp.MailMessage和CDO.Message。因为CDO.MessageClass有一个只读的SentOn,所以它们似乎没有任何可设置的“date”属性。这是不是有可能是我失踪了标准的框架内,我需要实现我自己MessageClass的,或者我应该手动修改现有的.eml文件为文本文件,或使用其他如Afterlogic的MailBee?

注:这是不是恶意尝试和备份日期个人的电子邮件,这是一个真实的世界项目。我搜索了其他线索,如下面的线索,我似乎无法找到答案。 How can I send an e-mail with a past date from .NET?

回答

1

这是非常简单的使用MimeKit包:

string outputDirectory = "out"; // or whatever the output path is 
foreach (var file in Directory.EnumerateFiles(workingDirectory, "*.eml")) 
{ 
    var message = MimeMessage.Load(file); 
    message.Bcc.Add(new MailboxAddress("[email protected]")); 
    string outputFile = Path.Combine(outputDirectory, Path.GetFileName(file)); 
    message.WriteTo(outputFile); 
} 
+1

谢谢麦克。我知道必须有一些第三方套件才能做到这一点。这比MailBee更好,不需要花费任何东西。你刚刚救了我400美元,头痛:-) –