Page 1 sur 2

[R] Modifier une police et sa couleur dans un mail

Posté : sam. 26 déc. 2009 12:18
par lerin57
Bonjour à tous,
Tout d'abord, j'espère que la plupart ont passé un joyeux noel.

Voila un nouveau probleme.
Avec l'aide De Iste, j'ai put composer un script mettant en scene plusieurs Gui me conduisant à la conception d'un mail préformaté, généré par la commande _inetmail().
Ce type de mail sert, dans mon travail a envoyer des escalades vers des groupes de compétences.
Le client de messagerie est Outlook, et le mail généré est au format Html.
Je voudrait, dans le corps du message, selectionner certains paragraphes et mettre leur police en gras et en couleur (rouge par exemple).

Pour la partie selection, j'ai observé que autoit pouvait détecter et rechercher du texte dans l'emplacement d'une fenetre (fonction Wingettext() ou controlgettext()).

J'essaie actuellement de comprendre le principe de ces fonction.

J'aimerais savoir si il existe un moyen, une fois le texte trouvé, de lui attribuer l'attribut "gras" et la couleur rouge.

Je n'ai pas trouvé d'exemple probant dans l'aide, et il semble que le thème n'ai pas été abordé dans le forum (ou je n'ai pas cherché sur les bons mots clé).

J'ai eu l'idée d'une macro sous word, mais il semble que cette fonction ne puisse marcher que si la maro existe déja, ce qui ne convient pas à la demarche.

Si quelqu'un pouvait m'aider, je l'en remercie par avance.

Re: [..]modifier une police et sa couleur dans un mail

Posté : sam. 26 déc. 2009 13:50
par Tlem
Puisque votre Email sera au format HTML, utilisez donc les balises HTML pour mettre en forme votre texte. ;)

Envoyez-vous un Email en ayant mit certaines partie du texte en gras, en rouge, en italique, etc ...
Puis après l'avoir réceptionné, regardez la source et constatez la simplicité d'emplois. ;)

Re: [..]modifier une police et sa couleur dans un mail

Posté : dim. 27 déc. 2009 12:50
par lerin57
Hé bien, il y a un tout petit probleme.

Je n'y connait ABSOLUMENT rien en html.
Je ne sait même quelle fonction je pourrait utiliser pour genrerer le resultat.

Pourriez vous m'orienter, ou me fournir un exemple.

Re: [..]modifier une police et sa couleur dans un mail

Posté : dim. 27 déc. 2009 20:16
par timmalos
Utilsez un editeur WYSIWYG (je conseille NVU, gratuit) :C'est un editeur de texte qui vous donnera le code html.
Vous n'avez qu'à taper votre texte, l'editer a votre convenance, puis copier coller le code html.

Re: [..]modifier une police et sa couleur dans un mail

Posté : lun. 28 déc. 2009 01:30
par Tlem
Il est clair que c'est le plus simple.
Sinon, vous pouvez lire ceci : http://www.allhtml.com/articles/detail/374

Re: [..]modifier une police et sa couleur dans un mail

Posté : lun. 28 déc. 2009 12:52
par lerin57
Bonjour,

Merci pour vos réponses.

Concernant le fait d'afficher la source du mail, aucun probleme.

voici mon exemple de corp de message en html :

Code : Tout sélectionner

<p class=MsoNormal><b><font size=2 color=red face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:red;font-weight:bold'>Ceci est un nouveau test d&#8217;envoie.<o:p></o:p></span></font></b></p>
voici un exemple d'envoie de mail sous autoit :

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Inet.au3>

Local $nDest, $nCc, $nObj, $nCorps ; Destinataire , Copie, Objet, Corps du message

$nDest = "toto@testmail.fr"
$nObj = "test d'envoie"
$nCorps = ???

_INetMail($nDest, $nObj, $nCorps)
 
Ma question serait plutôt : Comment puis je insérer le code dans la variable $nCorps ?
Dois ajouter une include particulière ?

En vous remerciant de votre retour

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 29 déc. 2009 10:51
par lerin57
Un petit complement,

J'ai essayé de créer un corp avec l'include <ie.au3>.

Sous cette forme :
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Inet.au3>
#include <IE.au3>

Local $nDest, $nCc, $nObj, $nCorps ; Destinataire , Copie, Objet, Corps du message

$nDest = "toto@testmail.fr"
$nObj = "test d'envoie"
$ieobj = ("<" & "body lang=FR link=blue vlink=" & "#606420" & ">")
$iebd = "<p class=MsoNormal><b><font size=2 color=red face=Arial><span style='font-size:10.0pt;font-family:Arial;color:red;font-weight:bold'>Ceci est un nouveau test d&#8217;envoie.<o:p></o:p></span></font></b></p>"

$nCorps =_IEBodyWriteHTML($ieobj, $iebd)

_INetMail($nDest, $nObj, $nCorps)
Sans résultat.

Je Suppose qu'il y a forcément une erreur, ou du moins que je ne sais pas me servir correctement des fonctions appropriées.

Pour en revenir à ce probleme, quelqu'un pourrait-il m'orienter ?

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 05 janv. 2010 14:17
par lerin57
Bonjour,

Je reviens vers vous pour ce problème.
Je bloque toujours, et je ne sais quelle fonction ou include utiliser pour ce script.

Si quelqu'un à la gentillesse de compléter ou corriger l'exemple fournie ci-dessus, je l'en remercie par avance. :wink:

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 05 janv. 2010 17:04
par ayuckers
Hello
Je profite de ce sujet car je voudrais faire la meme Chose
Ma messagerie est outlook 2003
je voudrais injecter un texte formater dans le corp du message
mais sans succes juqu'a maintenant.
j'ai aussi essayer de passer par les " Control " mais le resultat ne me convient pas

Vioci le resultat de mes recherche et experimention :
(ce petit bout de code fonctionne mais le texte n'est pas formater )
est il réellement possible d'afficher un bout de text Formater ?
j'ai essayer differante methode avec des fichier RTF et HTML
mais les contenu s'affiche de manierre non formater ou pas du tout.
► Afficher le texte
la plupart des lignes en commentaire sont different test.
si vous pensé qu'il faut crée un nouveau sujet dite le moi... :)

Re: [..]modifier une police et sa couleur dans un mail

Posté : mar. 05 janv. 2010 17:11
par DJSIR
timmalos a écrit :Utilsez un editeur WYSIWYG (je conseille NVU, gratuit)
Un peu en retard mais.. Tim, le développement de Nvu est arrété et il à été remplacé par KompoZer

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 05 janv. 2010 17:17
par Tlem
J'ai jeté un oeil sur la fonction _InetMail() qui ce trouve dans l'include Inet.au3.
Le problème de cette fonction, c'est qu'elle utilise la fonction _INetExplorerCapable() qui limite les caractères à certains code ASCII seulement :
If $n_IEChar < 0x21 Or $n_IEChar = 0x25 Or $n_IEChar = 0x2f Or $n_IEChar > 0x7f Then
Donc le formatage du texte n'est vraisemblablement pas possible.
Idem pour les caractères accentués Français ...
Si vous voulez utiliser cette fonction, je vous conseil de la ré-écrire ou du moins d'utiliser la ligne de commande qui va bien. ;)

Voici la fonction _InetMail()
► Afficher le texte
Donc si je décompose, je vois que la ligne

Code : Tout sélectionner

Local $var = RegRead('HKCR\mailto\shell\open\command', "")
récupère le logiciel de mail par défaut.
Puis celle qui suit lance ce logiciel avec pour arguments les informations pour le mail. ;)
Donc il suffirait de savoir comment envoyer les informations en ligne de commande pour prendre en compte le formatage du texte et le tour serait joué.

Cela dit, je ne suis pas sure que cela soit simple. Donc peut être que l'utilisation d'un UDF qui prend en charge le HTML serait pas mal. ;)
http://www.autoitscript.com/forum/index ... t&p=166575

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 05 janv. 2010 17:32
par Tlem
Je n'ai pas trouvé grand chose sur l'ajout du formatage et la liaison en ligne de commande.

Mais il semble qu'il y ai une solution bien plus 'pratique' dans les possibilités.
Ce serait de créer un fichier .eml (qui est principalement composé de code HTML).
Ensuite l'envoi de ce fichier en argument au logiciel de mail, et le tour est joué. ;)

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 05 janv. 2010 17:50
par ayuckers
A force de perseverer j'ai fini par trouver une solution qui me convient a 80%
avec un texte formater en HTML
l'ideal pour moi serai de faire la meme chose en RTF

Attention cette exemple ne fonctionne que pour outlook !

l'approche est legerement differente (merci le forum anglais :D )
► Afficher le texte

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 05 janv. 2010 17:53
par Tlem
La solution du fichier .eml me semble bien plus simple et surtout plus universelle. :roll:

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 05 janv. 2010 18:12
par lerin57
Bonsoir,

Merci pour toutes ces réponses,

Le vais étudier la solution de Tlem,

LA fonction inetmail() ressemblant un peu à la commande mailto:(si je ne m'abbuse), je suppose qu'elle devait avoir certaines limites.

Je remercie également ayuckers, son idée est également interressante.

Je reviens vers vous tres vite après les tests.

Bonne soirée à tous.

Re: [..] Modifier une police et sa couleur dans un mail

Posté : sam. 09 janv. 2010 13:12
par lerin57
Bonjour, A tous

J'ai commencer à éplucher Google pour la création d'un fichier *.eml.
Hors il est indiqué, sur les premiers forum que j'ai visité, qu'un fichier *.eml ne peut être lu que par Outlook express ( ???).

Une petite précision, nous travaillons exclusivement sous Outlook 2003

Les version office jusqu'à 2003 ne supporterait pas ce format (quid de office 2007 ?)

J'ai tout de même essayé un export de mails avec différentes méthode, tels que enregistrer un message outlook (Dans un premier temps, le format eml n'est effectivement pas proposé).
J'ai essayé également d'afficher la source et de l'enregistrer au format eml, sans succés.

Sinon, j'ai abordé également la solution de ayuckers, mais comme je l'ai souligné un peu plus haut, je manque beaucoup de pratique au niveau des interpreteurs html.

Quoiqu'il en soit, j'aimerais persévérer sur ces deux possibilité, donc si vous avez des précisions à m'apporter, je vous en remercie par avance.

Re: [..] Modifier une police et sa couleur dans un mail

Posté : sam. 09 janv. 2010 14:08
par ayuckers
Hello, lerin57

Moi non plus je ne comprend pas tout ce que je fait, je test encore et encore des bout de code dans tout les sans :lol:

Ma fonction sur mesure pour realiser l'automatisation de mes mail en fonction de model prédefini est presque terminer, je la posterait ici dans le week end.

Sinon pour ce qui est du HTML moi aussi mes connaissance son limité
tu peut t'aider du logiciel Kompozer qui est le remplacant de Nvu....
http://kompozer.net/

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 12 janv. 2010 09:08
par ayuckers
Edit : mise a jour....

voici donc ma fonction final :
Pour obtenir un texte formaté je réalise un model HTML.
pour faire ces model j'utilise le logiciel Kompozer car je n'y connais rien en HTML
cette exemple fonctionne avec OutLook 2003 (pas tester avec le 2007)

Code : Tout sélectionner

Func _CreateMail($From, $To, $Subject, $Model, $sAttachments = "", $AutoSend = 0, $ModelDirectory = "C:\"
$From : Correspond a l'éméteur du mail, ex : "nom@societe.com"
$To : correspond au destinataire, ex : "titi@gmail.com"
$Subject : correspond au sujet du mail, ex : "coucou c'est moi"
$Model : fichier HTML contenant le model a envoyer, ex : "toto.html"
$sAttachments : Si il y a des fichiers a attacher, ex :"c:\foto\photo1.jpg;c:\document\test.doc"
$AutoSend : si 0 ne fait rien, si 1 envoi le mail automatiquement
$ModelDirectory : répertoire contenant les model, ex : "C:\ModeOutLook\"

Exemple simplifier a l'extreme (mon point de depart):
► Afficher le texte
Voici le Code pour envoyer un model HTML :
► Afficher le texte
Exemple de resultat :
► Afficher le texte

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 12 janv. 2010 15:53
par lerin57
Bonjour, Ayuckers.

Je suis désolé de t'embeter, mais je vais devoir te demander quelques précisions.

J'ai suivi ton conseil, et j'ai récupéré la dernière version de kompozer, afin de creer un fichier toto.html dans un emplacement courant.
Je lui ai mis la phrase "ceci est un test" en gras, couleur rouge, police arial.
Jusqu'ici, cela n'est qu'un simple détail.

Je m'attaque maintenant à ton script
les chiffres indiqués sur les variables suivantes doivent à mon avis influer sur le mail complet, pourrait tu, s'il te plait, les détailler :

Code : Tout sélectionner

    Local $olMailItem    = 0
    Local $olFormatRichText = 3
    Local $olImportanceLow   = 0
    Local $olImportanceNormal= 1
    Local $olImportanceHigh  = 2
    Local $olFormatHTML = 1
Peut tu m'indiquer egalement a quoi correspond la variable suivante :

Code : Tout sélectionner

$WinSubject = $Subject
J'ai compris pourquoi tu utilisait la fonction objcreate, mais que signifie la ligne

Code : Tout sélectionner

$oOMail = $oOApp.CreateItem($olMailItem)
pour la suite du code :

Code : Tout sélectionner

.SentOnBehalfOfName = ($From) ; Envoyé en tant que...
        .To = ($To) ; destinataire
        .Subject = $Subjectn ; Sujet du mail
        .BodyFormat =  $olFormatHTML ; format HTML
        ;.BodyFormat =  $olFormatRichText
        .Importance = $olImportanceHigh
        ;.Body = "email message"
        .HTMLBody = $MonModel ; model en HTML
        If $sAttachments <> "" Then
            $asAttachments = StringSplit($sAttachments,";")
            For $iNumOfAttachments = 1 to $asAttachments[0]
                .Attachments.Add($asAttachments[$iNumOfAttachments])
J'ai essayé d'attribuer des valeurs à $Subjectn et $To, mais rien ne se passe.

Je suis désolé de t'embeter, mais ton script est vraiment interressant, et si tu pouvais le décortiquer un peu plus, je pense que j'arriverais à trouver mon bonheur.

En te remerciant par avance.

Re: [..] Modifier une police et sa couleur dans un mail

Posté : mar. 12 janv. 2010 23:55
par ayuckers
Voila j'ai corriger et modifie mon poste juste au dessus
j'ai modifier l'exemple car effectivement il y avait des erreur.. Maintenant sa dervrait fonctionner correctement.

En ce qui concerne :

Code : Tout sélectionner

  Local $olMailItem = 0
    ;Local $olFormatRichText = 3
    ;Local $olImportanceLow = 0
    ;Local $olImportanceNormal = 1
    ;Local $olImportanceHigh = 2
    Local $olFormatHTML = 1
Ce sont d'apres ce que j'ai compris des constante de model Objet "OutLook"
http://support.microsoft.com/kb/285202/fr
http://support.microsoft.com/kb/222101/fr

En fait je découvre moi aussi et je n'ai pas encore saisie toute les subtiliter de ce que j'utilise.

Dit moi si maintenant sa fonctionne :)