Page 1 sur 1

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

Posté : sam. 26 sept. 2020 19:10
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.

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

Posté : sam. 26 sept. 2020 23:45
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)

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

Posté : dim. 27 sept. 2020 14:44
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.