2015-08-12 1 views
2

J'étudie actuellement la bibliothèque redemption pour convertir des fichiers MSG en fichiers EML.Les adresses internes sont manquantes après la conversion de MSG en EML en utilisant Redemption

RDOSession session = new RDOSession(); 
RDOMail msg = session.GetMessageFromMsgFile(msgFile); 
msg.SaveAs(emlFile, rdoSaveAsType.olRFC822); 

Jusqu'à présent, Redemption fait un très bon travail ici contrairement à tout ce que je l'ai testé contre notre « corpus fichiers MSG-sauvages ».

Néanmoins, il existe un problème avec les adresses de messagerie internes. Pour les adresses e-mail internes, le fichier EML résultant contient uniquement la partie des adresses, mais pas l'adresse e-mail réelle avec le signe @.

Je peux voir que RDOMail objets destinataires contient l'adresse de messagerie réelle dans la propriété SMTPAddress dans tous les cas. Mais il existe une différence pour la propriété Address qui contient "l'adresse de messagerie réelle" pour les adresses externes, mais quelque chose comme /O=EXAMPLE ORGANIZAION/OU=SOME GROUP/cn=Recipients/cn=FBarney pour les adresses internes. Ces derniers sont exactement les adresses qui manquent l'adresse e-mail réelle dans le fichier EML résultant.

J'ai donc essayé de passer outre la propriété Address comme ça:

recipient.Address = recipient.SMTPAddress; 

Mais cela n'a pas d'effet sur le résultat EML-fichier à la fin.

Comment faire pour convertir MSG en EML avec rédemption sans perdre les réelles adresses e-mail pour les adresses internes?

+0

Question connexe mais ne traitant pas de la conversion en particulier: http://www.pcreview.co.uk/threads/how-to-get-the-recipients-email-address-in-redemption.1841215/ –

Répondre

4

Ceci indique que les adresses de type EX ne peuvent pas être converties en SMTP. Cela se produit généralement si la session MAPI actuelle n'a pas accès au serveur Exchange qui héberge ces objets GAL. Dans votre cas particulier, il n'y a aucune session MAPI. Vous pouvez définir la propriété RDOSession.MAPIOBJECT à Namespace.MAPIOBJECT à partir du modèle objet Outlook pour partager la session avec Outlook ou vous pouvez appeler RDOSession.Logon/LogonExchangeMailbox/etc.

Vous pouvez également essayer de spécifier le format olRfc822_Redemption pour forcer Redemption à utiliser son convertisseur MIME interne (il passe plusieurs étapes pour obtenir les adresses SMTP du message lui-même plutôt que GAL). Par défaut, olRfc822 utilise le convertisseur Outlook intégré (IConvertorSession) si Outlook est installé.

+0

Merci pour l'instant , Dmitry. La conversion sera effectuée sur un serveur de conversion dédié qui n'aura jamais accès au serveur Exchange. Outlook sera installé sur le serveur de conversion. Utiliser 'olRfc822_Redemption' est complètement hors jeu, car il produit les mêmes résultats impairs pour de nombreux fichiers msg comme notre solution actuelle. Je n'ai pas encore compris le point avec 'MAPIOBJECT', mais c'est probablement parce que je manque de connaissances ici. N'est-il pas possible de tromper le 'SMTPAddress 'disponible dans les * champs * avant la conversion? –

+1

Outre l'adresse du destinataire, vous devez également définir l'ID d'entrée. Qu'est-ce qui n'allait pas avec l'olRfc822_Redemption? Pouvez-vous être un peu plus précis? –

+0

Nous avons des fichiers msg qui manquent des pièces jointes après la conversion en eml par exemple. C'est la même chose avec olRfc822_Redemption et notre solution actuelle.Mais Outlook est capable d'afficher toutes les pièces jointes et l'eml convertie olRfc822 le fait aussi. Ce n'est que l'une des nombreuses questions d'environ 30 fichiers msg problématiques que j'ai dans nos tests unitaires ici. Les fichiers eml convertis par olRfc822 les passent tous en attente du problème d'adresse décrit ici. –