C#.EML重新发送新地址 - 日期问题

时间:2016-12-22 16:17:04

标签: c# smtp eml

我正在实现的主要要求是阅读数以百万计的旧电子邮件,并将其发布到我们的新系统中以进行正确的归档。任务本身是读取.eml文件,并添加新的BCC电子邮件地址,然后将新的电子邮件文件放入特定的SMTP服务器,该服务器将路由到智能主机,然后智能主机将电子邮件归档,而不会进入现实世界

问题是,当我调用.Send()方法时,日期戳是当前日期,而不是原始电子邮件的日期。我尝试过使用Smtp.MailMessage和CDO.Message。似乎没有任何类型的“date”属性是可设置的,因为CDO.MessageClass有一个只读的SentOn。这是否在我缺少的标准框架内是可能的,我是否需要实现自己的MessageClass,还是应该手动将现有的.eml文件修改为文本文件,还是使用Afterlogic MailBee等替代方案?

注意:这不是恶意尝试和更新单个电子邮件的意图,这是一个真实世界的项目。我搜索过其他主题,例如下面的主题,我似乎无法找到答案。 How can I send an e-mail with a past date from .NET?

1 个答案:

答案 0 :(得分: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("bcc@test.com"));
    string outputFile = Path.Combine(outputDirectory, Path.GetFileName(file));
    message.WriteTo(outputFile);
}