2016-12-22 3 views
1

La principale exigence que je suis en train de remplir est de lire des millions d'anciens e-mails et de les poster dans notre nouveau système pour un archivage approprié. La tâche elle-même consiste à lire le fichier .eml et à ajouter une nouvelle adresse e-mail BCC, puis à transférer le nouveau fichier e-mail dans un serveur SMTP spécifique qui est routé vers un hôte actif qui archive ensuite le courrier électronique sans entrer dans le monde réel .C# .EML renvoyer avec une nouvelle adresse - Date de publication

Le problème est que lorsque j'appelle la méthode .Send(), l'horodatage est la date actuelle, et non la date de l'e-mail d'origine. J'ai essayé d'utiliser à la fois Smtp.MailMessage et CDO.Message. aucun d'entre eux ne semble avoir un type de propriété "date" définissable, car CDO.MessageClass a un SentOn qui est en lecture seule. Est-ce possible dans les frameworks standard qui me manquent, dois-je implémenter ma propre MessageClass, ou devrais-je modifier manuellement le fichier .eml existant en tant que fichier texte, ou utiliser une alternative comme Afterlogic MailBee?

Remarque: il ne s'agit pas d'une intention malveillante d'essayer de remonter la date d'un e-mail individuel, il s'agit d'un projet concret. J'ai cherché d'autres sujets tels que celui ci-dessous dont je n'arrive pas à trouver une réponse. How can I send an e-mail with a past date from .NET?

Répondre

1

Ceci est assez simple en utilisant le package 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

Merci Mike. Je savais qu'il devait y avoir un kit de 3ème partie pour le faire. Cela fonctionne encore mieux que MailBee et ne coûte rien. Vous venez de me sauver 400 $ et un mal de tête :-) –