Je dois lire à partir du fichier .MSG Outlook dans .NET sans en utilisant COM API pour Outlook (car il ne sera pas installé sur les machines que mon application va exécuter). Existe-t-il des bibliothèques tierces gratuites pour le faire? Je veux extraire les champs De, To, CC et BCC. Les champs de date d'envoi/réception seraient bons s'ils sont également stockés dans des fichiers MSG.Lire à partir de fichiers .msg
Répondre
Mise à jour: J'ai trouvé une bibliothèque 3ème partie COM appelé Outlook Redemption qui fonctionne très bien pour moi en ce moment. Si vous l'utilisez via COM-Interop dans .NET, n'oubliez pas de libérer chaque objet COM une fois que vous avez terminé, sinon votre application se bloque aléatoirement.
Si vous ouvrez le fichier .MSG dans un éditeur de texte, je crois que vous trouverez que les informations que vous recherchez sont stockées sous forme de texte dans le fichier. (Il est sur tous les messages que j'ai vérifié au moins)
Il serait assez facile d'écrire du code pour analyser le fichier à la recherche de lignes commençant par "De:" ou "À:", etc., puis extraire le informations dont vous avez besoin.
Si vous avez également besoin du corps de l'e-mail, cela peut être un peu plus compliqué.
Je crois que les fichiers binaires sont des thats .msg –
Ils sont, mais il a raison. Essayez et voyez par vous-même – rotard
Microsoft a documenté ceci: .MSG File Format Specification
merci et pouah ... c'est un peu plus que je voulais mordre :-P –
C'est un document "Structured Storage". J'ai utilisé avec succès Andrew Peace's code pour les lire dans le passé, même sous .NET (en utilisant C++/CLI) - c'est propre et assez facile à comprendre. Fondamentalement, vous devez déterminer quels disques vous avez besoin, et rechercher pour ceux - il devient un peu poilu, puisque différentes versions d'Outlook et différents types de messages se traduiront par différents enregistrements ...
Il y a code disponible sur CodeProject pour lire les fichiers .msg sans COM. Voir here.
c'est pas mal (c'est gratuit et open source!) Mais ne supporte pas les champs de date sur un msg (encore) –
Avec une légère modification cela peut également enregistrer des pièces jointes (pour le moment il affiche simplement s'il y en a, et Taille). –
@Steve un commentateur partagé les instructions pour obtenir la date d'envoi/reçu ici: http://www.codeproject.com/Articles/32899/Reading-an-Outlook-MSG-File-in-C?msg=2932319#xx2932319xx (faites défiler jusqu'à la fin) – Ciaran
Voici un exemple de code VBA utilisant Outlook Redemption que Huseyint a trouvé.
Public Sub ProcessMail()
Dim Sess As RDOSession
Dim myMsg As RDOMail
Dim myString As String
Set Sess = CreateObject("Redemption.RDOSession")
Set myMsg = Sess.GetMessageFromMsgFile("C:\TestHarness\kmail.msg")
myString = myMsg.Body
myMsg.Body = Replace(myString, "8750", "XXXX")
myMsg.Save
End Sub
Vous pouvez essayer notre bibliothèque (commerciale) Rebex Secure Mail. Il peut lire le format Outlook MSG. code suivant montre comment:
// Load message
MailMessage message = new MailMessage();
message.Load(@"c:\Temp\t\message.msg");
// show From, To and Sent date
Console.WriteLine("From: {0}", message.From);
Console.WriteLine("To: {0}", message.To);
Console.WriteLine("Sent: {0}", message.Date.LocalTime);
// find and try to parse the first 'Received' header
MailDateTime receivedDate = null;
string received = message.Headers.GetRaw("Received");
if (received != null)
{
int lastSemicolon = received.LastIndexOf(';');
if (lastSemicolon >= 0)
{
string rawDate = received.Substring(lastSemicolon + 1);
MimeHeader header = new MimeHeader("Date", rawDate);
receivedDate = header.Value as MailDateTime;
}
}
// display the received date if available
if (receivedDate != null)
Console.WriteLine("Received: {0}", receivedDate.LocalTime);
Plus d'informations sur les dates reçus et envoyés et comment sont-ils représentés dans le message peut être trouvé à http://forum.rebex.net/questions/816/extract-senttime-receivetime-and-time-zones
- 1. Comment lire la date de réception des fichiers Outlook MSG (sans l'API Outlook)?
- 2. Lire à partir DataGridView
- 3. Est-il possible de lire les fichiers .eml dans .net
- 4. Lire le joystick à partir de Flash
- 5. HTTPResponse (msg) Remplacer!
- 6. lire des données à partir de fichiers, nom de fichier en entrée
- 7. Lire et mettre à jour le flux de fichiers
- 8. ASP.NET Lire des fichiers à partir d'un partage réseau protégé par mot de passe
- 9. Quelle est la meilleure façon d'importer/lire des données à partir de fichiers pdf?
- 10. Fichiers batch: comment lire un fichier?
- 11. Comment lire un rapport de plantage à partir de l'iPhone
- 12. Lire des fichiers en python
- 13. gcc compilation des notes de temps/msg
- 14. SharpSVN lire TOUS les noms de fichiers
- 15. Comment lire des fichiers vidéo à partir d'une bibliothèque vidéo iPod?
- 16. Comment lire le PAN à partir d'une carte à puce EMV à partir de Java
- 17. Fichier CHM à partir de fichiers XSD
- 18. comment créer des fichiers hbm à partir de fichiers java?
- 19. Lire XMP à partir de PDF existant avec iTextSharp
- 20. Lire fichier Excel de données objet à partir HttpPostedFileBase
- 21. Lire la configuration IIS7 à partir de l'application Web?
- 22. Comment lire un fichier texte chinois à partir de C#?
- 23. Passer un msg à un autre thread dans C#
- 24. Comment lire les numéros à partir d'un fichier ASCII (C++)
- 25. Existe-t-il une bibliothèque gratuite pour l'analyse des fichiers .MSG?
- 26. Lire des fichiers dans un fichier JAR
- 27. Lire des fichiers texte Unicode avec Java
- 28. Comment lire plusieurs fichiers pcap> 2GB?
- 29. Lire plusieurs fichiers texte dans un dossier
- 30. Lire des fichiers CSS dans .NET
wow, je viens de faire un essai et c'est super facile à utiliser. Je vais ajouter une réponse avec un peu de code de harnais de test. – Knox