La question a déjà été soulevée ici:
https://panoramic.1fr1.net/t176-envoyer-un-email-automatique?highlight=emailmais il n'y a pas eu de solution satisfaisante.
J'ai eu le même problème: constituer un email par programme, avec éventuellement des pièces jointes, puis le faire émettre directement par le programme, sans intervention manuelle.
Je n'ai trouvé que la solution de faire appel à un programme externe, qui fait le travail de manière transparente en ligne de commande, avec des pièces jointes éventuelles, et donc activable par un Execute[_Wait].
Il s'agit de
SendEmail.exe, gratuit, que l'on trouve ici:
http://caspian.dotconf.net/menu/Software/SendEmail/(ne pas se laisser abuser par le pingouin (?), ça marche sous Windows).
(j'ai essayé auparavant SendMail.exe, ne pas confondre, mais c'est un peu plus compliqué à utiliser).
L'exécutable peut se mettre n'importe où, il est portable, ce n'est pas une installation windows.
Pour la syntaxe, lire le fichier README.txt.
Pour un essai rapide:
- Code:
-
' SendEmail Test d'envoi d'un email en ligne de commande depuis Panoramic
DIM sem$, exp$, des$ , obj$, txt$, smt$, a$
sem$ = "C:\Util\SendEmail\Sendemail.exe ": ' chemin de l'exécutable, à ajuster
exp$ = "Tartempion@wanadoo.fr": ' adresse email de l'expéditeur
des$ = "Monemail@wanadoo.fr": ' adresse email du destinataire, à ajuster
obj$ = "Message de test": ' objet du message
smt$ = "smtp.orange.fr": ' mettre ici son smtp serveur de messagerie, si autre que orange
txt$ = "Message de test avec lettres accentuées éèàùêîôûëï, pour voir": ' texte du message
a$ = "-f " + exp$ + " -t " + des$ + " -s " + smt$
a$ = a$ + " -u " + chr$(34) + obj$ + chr$(34) + " -m " + chr$(34) + txt$ + chr$(34)
a$ = a$ + " -q": ' option silencieuse
EXECUTE_WAIT sem$ + a$
TERMINATE
- dans des$ il faut mettre sa propre adresse email, pour recevoir le message.
- dans exp$ il faut mettre autre chose que dans des$, mais il semble que ça marche avec n'importe quoi qui
ressemble à une adresse (pour moi, chez wanadoo, ça marche avec tartempion...).
- on peut joindre des fichiers (images par exemple) avec le paramètre -a, par exemple:
-a c:\photos\image1.jpg c:\photos\image2.jpg etc...
Le texte du message peut être un fichier texte, ou html (voir la doc).
PS je n'ai pas trouvé comment faire des sauts de ligne dans txt$, j'ai essayé chr$(13)+chr$(10), ou chr$(10) tout seul, ou plusieurs rubriques -m, ça ne marche pas.
Bah, il faut faire un fichier du texte, avec le paramètre:
- Code:
-
-o message-file=Z:\test.txt
(incompatible avec le paramètre -m, c'est l'un ou l'autre)
Au moment de l'exécution il y a apparition brève (enfin, le temps de l'émission) d'une fenêtre noire msdos, le paramètre -q (quiet) n'a pas l'air de changer grand chose.
Mon utilisation: préparer par programme un email contenant un texte explicatif, des photos réduites par ce même programme, pour les envoyer à un correspondant, puis émettre l'email automatiquement.
L'option du fichier HTML en tant que texte est très intéressante car elle permet de faire une mise en page élaborée, enrichissement des caractères (centrages, taille, couleur, etc), insertion de tableaux, etc. etc., il suffit de connaître la structure générale d'un fichier html et quelques fonctions élémentaires, le tout trouvé facilement sur le net.
Le formatage minimum indispensable étant:
- Code:
-
<HTML>
<BODY>
... corps du message
</BODY>
</HTML>
Pour ceux que ça intéresserait, un site intéressant:
http://lehtml.com/html/index.htm voir la rubrique Annexes: Références Html en bref, qui contient les principales commandes.
Je préconiserais la structure suivante, qui me convient le mieux à moi pour ce que j'en fais:
-f exp$ -t des$ -u obj$ -o message-file=Nomdufichierhtml.htm -o message-content-type=html -a [liste des images]
(il n'y a donc plus de rubrique -m texte...).
A l'arrivée on a d'abord le contenu du fichier html avec sa mise en page, puis les images séparées les unes des autres par un trait horizontal.
Je précise que je ne fais pas du prosélytisme pour le html, mais c'est dans l'esprit d'écrire un programme en Panoramic qui ferait tout le travail de dialogue d'acquisition des paramètres et de mise en forme avant de lancer SendEmail.
Bon, j'ai édité un certain nombre de fois, maintenant je laisse un peu refroidir !