C# .EML 重新发送新地址 - 日期问题
C# .EML resending with new Address - Date Issue
我要完成的主要要求是通读数百万封旧电子邮件,然后 post 将它们放入我们的新系统中以进行适当存档。任务本身是读取 .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?
使用 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);
}
我要完成的主要要求是通读数百万封旧电子邮件,然后 post 将它们放入我们的新系统中以进行适当存档。任务本身是读取 .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?
使用 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);
}