|
Inicio → WINDEV 2024 → Objet Automation et Outlook --> extraire information d'un mail |
Objet Automation et Outlook --> extraire information d'un mail |
Iniciado por Fany, 16,jul. 2019 17:34 - 3 respuestas |
| |
| | | |
|
| |
Miembro registrado 365 mensajes Popularité : +12 (12 votes) |
|
Publicado el 16,julio 2019 - 17:34 |
Bonjour à tous,
J'ai un code qui fonctionne pour récupérer les informations d'un mail au format .msg à un emplacement connu sur mon ordinateur (j'extrais les informations depuis le chemin d'accès du fichier .msg)
CheminMail est une chaîne = "C:\Users\*****\Desktop\monfichier.msg" MonOutlook est un objet OLE "OutLook.Application" MailItemLoad est un objet automation dynamique MailItemLoad = MonOutlook>>CreateItemFromTemplate(CheminMail)
dDateReceptionMailLoad est une Date = MailItemLoad>>ReceivedTime hHeureReceptionMailLoad est une Heure = MailItemLoad>>ReceivedTime sExpediteurMailLoad est une chaîne = MailItemLoad>>SenderEmailAddress sDestinataireMailLoad est une chaîne = MailItemLoad>>To sContenuMailLoad est une chaîne = MailItemLoad>>HTMLBody sObjetMailLoad est une chaîne = MailItemLoad>>Subject
Je voudrais maintenant faire la même chose, mais depuis un mail enregistré dans ma base de données sous une rubrique de type mémo binaire, MAIS sans extraire ce dernier dans un dossier temporaire (je sais que c'est probablement la seule solution, mais comme il y a des personnes très calés sur ce forum, ça ne coute rien de demander si il n'y a pas une technique plus efficace).
Je pense que ma demande est irréalisable, mais je tente quand même.
Est il possible de remplacer la syntaxe :
MailItemLoad = MonOutlook>>CreateItemFromTemplate(CheminMail) par mon fichier contenu dans ma base de données, sans avoir à l'extraire dans un dossier temporaire ?
D'avance merci pour vos lumières,
Bonne fin de journée,
FanyMensaje modificado, 16,julio 2019 - 17:36 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 510 mensajes Popularité : +18 (18 votes) |
|
Publicado el 17,julio 2019 - 11:17 |
Bonjour Fany,
La seule manière que je connaisse actuellement est d'utiliser RDO, une bibliothèque COM de Outlook Redemption. http://www.dimastr.com/redemption/home.htm
Outlook Redemption à l'origine est une bibliothèque qui permet de contourner le verrou sécuritaire lorsqu'on veut piloter MS Outlook via l'automation. Mais c'est beaucoup plus que ça, car il offre en plus un modèle objet indépendant très complet qui permet de travailler avec des conteneurs MAPI (CDO, Exchange, fichier PST...) et aussi les e-mails. et divers formats de données. Redemption est payant mais la version développeur est gratuite, je l'utilise pour mes développement d'outils internes. Malgré tout, la richesse du produit mérite largement le prix d'une licence, sachant que la licence n'est pas restrictive en nombre d'utilisateurs et qu'il n'y a aucune redevance.
Evidemment, le temps à investir pour maîtriser RDO est assez conséquent. Ce qui doit être pris en compte pour décider de s'orienter dans cette direction.
Pour en revenir à ta question, dans RDO, il y a la classe RDOFolder2 qui dispose de la méthode Import(). cette méthode peut importer un e-mail qui est stocké en mémoire (type variant contenant un tableau d'octets) ou encore qui peut être lu via un objet qui implémente l'interface COM IStream. L'objet Folder où l'import a lieu peut être un dossier Outlook, un dossier Exchange ou un dossier d'un fichier PST local, par exemple.
Extrait de la documentation pour la méthode Import() : http://www.dimastr.com/redemption/RDOFolder.htm…
Import(Source, Type, Flags)
Imports from the specified file, IStream COM interface, or from a variant array of byte or of variant) One or more new items in the folder are created and returned as an RDOItems collection. All import formats supported by RDOMail.Import are supported by this method. The method allows to import iCal files with multiple events or vCard files with multiple contacts. For all other formats, a single new item is created. Flags parameter allow to specify what gets imported and how the new items in the folder are created. Source - string (file name), IStream COM interface, or a variant array (only variant array of byte or a variant array of variant are supported) Type - one of the rdoSaveAsType constants. See RDOMail.Import for the list of supported file formats. For the olICal and olVCard formats, this method supports multiple entities in a single file. Flags - variant, optional. A bitmask of the rdoImportFlags enum constants. If not specified, all MIME parts are imported (for the olRfc822 import format). If neither ifCreateUnsent nor ifCreateSent is set, the RDOMail.Sent property value will be determined by the default value of the parent store or (in case of MIME import) X-Unsent MIME header. //MIME import flags ifPlainBody = 1 ifHTMLBody = 2 ifHeaders = 4 ifRecipients = 8 ifAttachments = 16 ifHtmlImages = 32 //How the item items are created ifCreateUnsent = 64 ifCreateSent = 128
-- Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…Mensaje modificado, 17,julio 2019 - 11:21 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 90 mensajes Popularité : +7 (7 votes) |
|
Publicado el 17,julio 2019 - 14:55 |
Bonjour Fanny
OutlookRedemption est effectivement un super outil , qui permet notamment de passer outre certains messages d'alerte de sécurité d'Outllook, et je l'utilise dans tous mes projets. Mais même en RDO les fonctions GetMessageFromMsgFile(FileName, CreateNew) & CreateMessageFromMsgFile(FileName, MessageType, FileFormat) attendent au moins le nom d'un fichier physique.
Mais, s'il s'agit de créer un mail à partir d'un modèle concernant formatage du texte du mail , avez vous envisagé de sauver le corps du modèle au format HTML ou RTF et le stocker dans un mémo texte pour l'affecter :
- soit à la propriété HTMLBody d'un objet MailItem d'Outlook https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/ff868941(v=office.14)
- soit à la propriété RTFBody du même objet https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/ff867828(v=office.14)
Bon développement |
| |
| |
| | | |
|
| | |
| |
Publicado el 19,septiembre 2019 - 20:12 |
Bonjour Fany,
dans le cadre d'une application nous avons une gestion documentaire qui ouvre un message et l'affiche. ma première question est que passes-tu comme code lors de l'appel CreateItemFromTemplate(CheminMail) ? MailItemLoad = MonOutlook>>CreateItemFromTemplate(CheminMail)
Cordialement
Benoît |
| |
| |
| | | |
|
| | | | |
| | |
|