[R] OUTLOOK, Créer un modele de mail et le sauvegarder au format *.oft

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lerin57
Niveau 4
Niveau 4
Messages : 97
Enregistré le : mer. 30 sept. 2009 12:50
Status : Hors ligne

[R] OUTLOOK, Créer un modele de mail et le sauvegarder au format *.oft

#1

Message par lerin57 »

Bonsoir à tous,

Tout est dans le titre.

Pour faire simple, voici un exemple de script que certains auront peut etre déja vu dans ce forum :

_CreateMail("", "toto", "titi", "tata", "ceci est un test de sauvegarde 01", "ceci peut contenir un body au format HTML")

Func _CreateMail($From, $To, $Cc, $Bcc, $Subject, $Model)

   ; ********* constantes de modèle objet Outlook **************

   Local $asAttachments
   Local $olMailItem = 0
   Local $olFormatHTML = 1

   ; tester une variable local vers vba pour les modele (fichier *.ost ou "olTemplate")

   Local $olTemplate = 2

   ; Lecture du model celui ci est placé dans une variable

   $oOApp = ObjCreate("Outlook.Application")
   $oOMail = $oOApp.CreateItem($olMailItem)

   With $oOMail

      .SentOnBehalfOfName = ($From) ; Envoyé en tant que...
      .To =($To) ; destinataire
      .Cc = ($Cc) ; destinataire copie
      .Bcc = ($Bcc) ; destinataire copie cachée
      .Subject = $Subject ; Sujet du mail
      .BodyFormat = $olFormatHTML ; format HTML

      .HTMLBody = $Model ; model en HTML


      .Display ; Affichage du mail


   EndWith

EndFunc   ;==>_CreateMail

Maintenant, voici un bout de code Visual Basic que je voudrait intégrer :

Sub CreateTemplate()
 Dim MyItem As Outlook.MailItem
 
 Set MyItem = Application.CreateItem(olMailItem)
 MyItem.Subject = "Status Report"
 MyItem.To = "Dan Wilson"
 MyItem.Display
 MyItem.SaveAs Environ("HOMEPATH") & "\My Documents\statusrep.oft", OlSaveAsType.olTemplate
End Sub

1) J'ai donc besoin de créer un mail, en me basant sur un model html (çà, cela ne me pose aucun souci).

2) accessoirement, je dois pour voir afficher le mail, mais le code de base le permet déja.

3) Cepedant, il me faudra définir le chemin de sauvegarde et le nom du fichier dans une variable, et intégrer ceux-ci dans le bout de code "Environ("HOMEPATH") & "\My Documents\[nom du fichier mail].oft". => C'est sur ce point que j'ai besoin d'aide.

4) Je suppose que je dois ajouter une variable pour prévenir la création de mon modele, dans le genre :

Local $olTemplate = 2

En revanche, je ne sais pas comment interpreter la commande SaveAs, ni la variable OlSaveAsType.olTemplate

Je précise que j'ai déja épluché le forum autoitscript.com, et notament l'UDF outlookEx de WATER.
Le probleme, dans cet UDF, c'est que ... je n'ai rien compris dans sa façon de définir un objet outlook, ni dans les possibilités de les sauvegarder.

Si l'un des membres de ce forum dispose d'un exemple, ou de suggestions, je l'en remercie infiniment par avance.
Modifié en dernier par lerin57 le dim. 27 sept. 2020 14:45, modifié 3 fois.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] OUTLOOK, Créer un modele de mail et le sauvegarder au forma *.oft

#2

Message par walkson »

Bonjour,
A tout hasard,
après .Display ; Affichage du mail du premier code
.SaveAs($chemindesauvegarde,2) (mettre le chemin complet C:\...\... de préférence)
Peut être une piste: https://www.autoitscript.com/forum/topi ... as-method/

Après, si Outlook n'est pas une obligation, on peut utiliser un SMTP et créer un modèle de body
Voir https://www.autoitscript.fr/forum/viewt ... 43#p103443
https://www.autoitscript.fr/forum/viewt ... 86#p104486
C'est à mon avis ( :mrgreen: ) plus facile et plus maniable (avec Autoit)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
lerin57
Niveau 4
Niveau 4
Messages : 97
Enregistré le : mer. 30 sept. 2009 12:50
Status : Hors ligne

Re: [..] OUTLOOK, Créer un modele de mail et le sauvegarder au forma *.oft

#3

Message par lerin57 »

Bonjour, Walkson, et merci pour votre réponse.

Outlook est , hélas une obligation.

Pour etre plus clair, nous devons pouvoir créer des formulaires et les joindre ensuite par mail, cela réprésente une condition nécessaire.

En suivant vos conseils, et après quelques bug, voici le code corrigé :
   Global $CheminDeSauvegarde = @DesktopDir & "\mail_test.oft"

_CreateMail("", "toto", "titi", "tata", "ceci est un test de sauvegarde 01", "ceci peut contenir un body au format HTML")



Func _CreateMail($From, $To, $Cc, $Bcc, $Subject, $Model)

   ; ********* constantes de modèle objet Outlook **************

   Local $asAttachments
   Local $olMailItem = 0
   Local $olFormatHTML = 1

   ; tester une variable local vers vba pour les modele (fichier *.ost ou "olTemplate")

   Local $olTemplate = 2
;~    Global $CheminDeSauvegarde = @DesktopDir & "\mail_test.oft"
   ; Lecture du model celui ci est placé dans une variable

   $oOApp = ObjCreate("Outlook.Application")
   $oOMail = $oOApp.CreateItem($olMailItem)

   With $oOMail

      .SentOnBehalfOfName = ($From) ; Envoyé en tant que...
      .To =($To) ; destinataire
      .Cc = ($Cc) ; destinataire copie
      .Bcc = ($Bcc) ; destinataire copie cachée
      .Subject = $Subject ; Sujet du mail
      .BodyFormat = $olFormatHTML ; format HTML

      .HTMLBody = $Model ; model en HTML

;~       .Display ; Affichage du mail
      .SaveAs($CheminDeSauvegarde, $olTemplate)

   EndWith

EndFunc   ;==>_CreateMail
Et devinez ?

... Cela FONCTIONNE A MERVEILLE.

Un TRES GROS et GRAND MERCI pour votre assistance.

Je passe le sujet en résolu.

Toutefois, si d'autre personne ceullent ajouter des suggestion, je reste à leur écoute.

Walkson, encore une fois merci.
Répondre