SendMail // Envoi de mails doté d'un mode 'scriptable'

sendmail01.pngsendmail02.png
français anglais allemand   (pour contribuer, rendez-vous sur la page des fichiers de langues)

Avec un tel nom, il n'est pas bien difficile d'imaginer la fonction principale de SendMail... Mais cet outil est bien plus qu'un simple logiciel d'envoi de mails !

Une des principales caractéristiques de SendMail est qu'il peut être utilisé soit en mode interface graphique, soit en mode script. Je suppose qu'il n'est pas utile que je m'étende sur le premier, le second nécessite en revanche quelques explications : SendMail est "scriptable", ce qui signifie que l'on peut aussi l'utiliser en mode "ligne de commande", grâce à une syntaxe complexe.

Il est par conséquent possible d'utiliser SendMail en complément d'autres outils qui permettent d'exécuter des traitements externes. C'est le cas de LanAlertCenter (que vous pouvez aussi trouver sur ce site) mais aussi de nombreux outils du commerce, dans divers domaines.

Codes erreurs (ErrorLevel) retournés lors de l'utilisation en mode ligne de commande :

  • 0 : message envoyé avec succès
  • 1 : erreur dans les paramètres passés par l'utilisateur
  • 2 : erreur d'accès à l'ActiveDirectory
  • 3 : erreur de destinataire (groupes vides)
  • 4 : erreur de pièce jointe (introuvable)
  • 5 : erreur d'envoi du message (OSSMTP)

Une autre particularité de cet outil est qu'il permet d'envoyer des mails soit à des destinataires désignés manuellement, soit aux membres de groupes globaux de l'ActiveDirectory. Cette dernière possibilité est pratique puisqu'elle peut ainsi éviter d'avoir recours à la création de listes de distribution.

Cet outil n'aurait pas été complet s'il n'avait pas permis à l'utilisateur de pouvoir joindre des fichiers, cette fonctionnalité est par conséquent présente !

Enfin, je tiens à préciser que SendMail utilise le composant OSSMTP développé par OstroSoft que je remercie vivement.

ATTENTIONcet outil ne doit pas être utilisé pour effectuer du spam !

Télécharger Télécharger ce logiciel (version installeur)
Télécharger Télécharger ce logiciel (version portable ZIP) Note importante aux utilisateurs des versions portables

Date de création : 21/02/2005 @ 14:26
Dernière modification : 06/07/2020 @ 18:32
Catégorie : - Aide à l'administration
Page lue 167553 fois
 

Réactions à cet article

Réaction n°58 

par malko06 le 27/09/2010 @ 16:57

Bonjour,

Existe-t-il ou va-t-il exister une fonction permettant l'envoi d'une confirmation de lecture (accusé de réception) ?

Sous Unix je crois que c'est avec -Ndsn mais il est déjà utilisé (ahhh la casse sous windows...)

Merci

[réponse de damien, le 28/09/2010 à 07h03]

La version actuelle ne permet pas de configurer la demande d'accuser de réception. Mais étant donné que le composant que j'utilise permet cette option, cela signifie donc que l'ajout de la fonctionnalité à la prochaine version de SendMail est tout à fait envisageable.

Je me l'ajoute à la TODO list. cligne


Réaction n°57 

par Lsda26 le 22/07/2010 @ 16:36

Pas de problème! Je vais chercher de mon coté.

Par contre est-ce que sendmail.exe+MV50xxxx.dll (placés dans le même répertoire) peut fonctionner tous seul ou bien est-on obligé de l'installer.

Car sur mon poste où j'ai installé sendmail, mon batch fonctionne bien et sur le poste ou le batch devra tourner et ou je n'ai pas fait l'installation (juste un répertoire avec sendmail.exe+.dll+le batch, il ne fonctionne pas.

[réponse de damien, le 23/07/2010 à 06h46]

Pour que l'appli fonctionne sans l'avoir installée, il te faut les fichiers suivants :

  • sendmail.exe
  • msvbvm50.dll
  • vb5fr.dll
  • mscomctl.ocx : à déclarer par un regsvr32 mscomctl.ocx
  • ossmtp.dll : à déclarer par un regsvr32 ossmtp.dll

Tu peux au choix laisser les DLL/OCX dans le dossier de l'exécutable ou les placer dans System32 (ou SysWOW64 sous Vista/Win7 en 64 bits). Personnellement, je préfère les mettre dans System32 mais bon, chacun fait comme il veut...


Réaction n°56 

par Lsda26 le 22/07/2010 @ 15:17

Ca y est c'est nickel, ca fonctionne bien!
J'avais oublier de copier les 2 dernières lignes:
:ajoutefic
 set listefichiers=%listefichiers%,%fic%

Évidemment ça fonctionne mieux avec! sourire
J'utilisais la commande suivant pour copier les fichiers à envoyer dans un autre répertoire:
for /f "tokens=1-3 delims=/ " %%a in ('date/t') do set MMDDYY=%%b-%%a-%%c
xcopy %source%*.ba2 %dest% /D:%MMDDYY% /y

Tout fonctionne nickel, mais est-ce possible d'extraire la liste des fichiers  à mettre en pièce jointe d'un répertoire contenant d'autre fichier, de dates différentes, en utilisant la commande dir?
du genre dir /T:W *.ba2 | find %date%

Ca pourrait eviter de copier dans un autre répertoire les fichiers "du jour" à envoyer

[réponse de damien, le 22/07/2010 à 16h18]

Oui, c'est très certainement possible mais bon, je suis au taf là et je n'ai pas trop le temps de faire des recherches...


Réaction n°55 

par Lsda26 le 22/07/2010 @ 14:39

merci pour ton aide!

Apparemment, quand j'execute ton script, il me dit:
"Le système ne peut pas trouver le nom de fichier de commandes -ajoutefic"

j'étais partis sur un script bien tordu qui fonctionne pas evidement!!!

[réponse de damien, le 22/07/2010 à 14h47]

Je viens de faire un copier/coller du code dans un fichier .bat et ça fonctionne nickel sous Windows XP SP3... pas ma faute

T'es sûr que tu n'as pas foiré la manip ?

[réponse de damien, le 22/07/2010 à 14h54]

Idem sous Windows7, ça fonctionne sans erreur.


Réaction n°54 

par Lsda26 le 22/07/2010 @ 11:18

de même, est-il possible de ne pas afficher le message de confirmation d'envoi du mail quand on passe par les lignes de commandes.

[réponse de damien, le 22/07/2010 à 14h15]

Voir réponse à ton autre question ! ;)


Réaction n°53 

par Lsda26 le 22/07/2010 @ 11:16

coucou

Un grand merci pour tout ces soft!!!

Je voudrais savoir si en passant par ligne de commande, il est possible de placer en pièces jointes tout les fichiers qui sont dans un répertoire précis. Car je ne connait pas le nom des fichiers qui sont générés tout les jours.

[réponse de damien, le 22/07/2010 à 14h14]   Attention, cette réponse fait référence à une ancienne syntaxe de SendMail

La version 1.8 ne le permet pas nativement (donc je viens d'ajouter cette fonctionnalité pour la prochaine version) mais tu peux "aisément" arriver à tes fins en gérant ça depuis ton script appelant.

Je te propose l'exemple suivant :

Fichier SendMail.bat
 set sujet=test envoi plusieurs fichiers
 set exp=moi@dipisoft.com
 set dest=toi@dipisoft.com
 set corps=corps.txt
 set fichiers=c:temp*.log
 
 for %%i in (%fichiers%) do (
    set fic=%%i
    call :ajoutefic
 )

 set listefichiers=%listefichiers:~1%

 sendmail.exe /m:%corps% /u:%dest% /t:%sujet% /e:%exp% /f:%listefichiers% /l

 echo %errorlevel%

 pause

 exit

 :ajoutefic
 set listefichiers=%listefichiers%,%fic%

Comme tu peux le voir, c'est le script qui va construire la liste des fichiers (dans la boucle for %%i in...) qui sera ensuite transmise en paramètre à SendMail. A noter la présence du /l (L minuscule) qui permet d'inhiber l'affichage du message en fin d'opération, mais le dirige dans le fichier sendmail.log... Ça répond donc à ta seconde question.

Après tes tests, tu pourras supprimer les lignes echo %errorlevel% et pause qui ne te serviront plus.

N'hésite pas à me recontacter si tu as besoin de précisions sur le fonctionnement de ce script.


Réaction n°52 

par Thierry le 07/07/2010 @ 15:16

Bonjour,

Tout d'abord, bravo pour le développement FreeWare : c'est très souvent une aide très précieuse pour de nombreux béotiens.

Je suis à la recherche d'un outil d'envoi de mails, avec certaines fonctionnalités, et je voudrais savoir si SendMail les intègre.

Ce que je souhaite, c'est faire de l'envoi de mails en une seule fois à x personnes, avec une ou plusieurs pièces jointes spécifiques à chaque personne.

Par exemple, j'ai un répertoire qui contient les fichiers xx1.pdf, xx2.pdf, yy1.pdf et yy2.pdf, et je souhaite envoyer automatiquement un mail à Monsieur xx avec les pièces jointes xx1.pdf et xx2.pdf, ainsi qu'un mail à Madame yy avec les pièces jointes yy1.pdf et yy2.pdf.

Est-ce possible avec SendMail, soit en mode graphique, soit en ligne de commande ?

Cordialement

[réponse de damien, le 07/07/2010 à 18h40]

Mon soft te permettra d'envoyer des mails à x personnes, y compris avec des pièces jointes, mais pour un même envoi ce sera le même corps de message et les mêmes pièces jointes pour chacun des destinataires.

Maintenant tu peux très bien l'utiliser conjointement à un petit développement spécifique qui lancerait autant de fois SendMail (en ligne de commande, avec les paramètres qui vont bien) que tu as de destinataires et qui serait en charge de personnaliser les messages et les pièces jointes. Ça peut se faire assez simplement depuis Excel ou Calc par exemple (je dis ça dans le cas où tes contacts seraient dans un tableau d'un de ces formats), ou à l'aide de n'importe quel outil de scripting...

A moins que tu puisses trouver ton bonheur avec un outil plus orienté mailing de masse mais je ne suis pas sûr que tu trouves ça gratuitement. pas ma faute


Réaction n°51 

par Minipinpon le 30/06/2010 @ 10:58

cool comme disent les djeuns d'aujourd'hui "trop d'la balle" sourire

décidément votre site devient vraiment une référence pour moi.

Merci beaucoup. Je vais utlérieurement m'attarder sur vos autres softs, notamment WakeOnLan qui pourrait bien m'apporter des oslutions à certains de mes soucis au bureau comme à la maison cligne

encore un grand merci et bonne continuation

[réponse de damien, le 30/03/2010 à 11h07]

Cool... heureux que ça fonctionne à présent.

Bonne continuation à toi aussi et peut-être à bientôt concernant d'autres outils ! ;)


Réaction n°50 

par Minipinpon le 30/06/2010 @ 09:55

Merci de votre soutien.

J'avance peu à peu mais ca ne fonctionne toujorus pas.

j'ai créé un fichier .BAT avec le code suivant :

"c:program filesdipisoftsendmailsendmail.exe"/u:toto@pinpon-solutions.net/t:test/m:"c:test.txt"/f:"c:Documents and SettingstotoMes documentsfichier excel source 2010.xls"/e:toto@pinpon-solutions.net/p:25/s:smtp.orange.fr/l

j'ai une fenêtre MSDOS qui s'ouvre et affiche le code puis se referme environ 6 secondes après. Mais je ne reçois aucun mail sur toto@pinpon-solutions.net. oups Si je ne mets pas les " ", la fenêtre MS dos ne s'ouvre même pas portnawak

j'y comprends rien triste

désolé de vous embêter encore. Merci poru votre aide.

[réponse de damien, le 30/06/2010 à 10h49]   Attention, cette réponse fait référence à une ancienne syntaxe de SendMail

Pas de souci tu ne m'embêtes pas : j'estime qu'il est tout à fait normal d'assurer le SAV des produits que j'ai développé quand même ! :)

Le dysfonctionnement que tu rencontres vient du fait que cette version de SendMail ne reconnait pas l'usage des double-quote pour "délimiter" les paramètres. Pire : leur utilisation fout la merde ! Il y a un bon moment que j'ai modifié ça pour la prochaine version mais elle n'est toujours pas disponible car j'ai commencé d'autres modifs plus importantes mais elles ne sont toujours pas terminées.

Bon, peu importe... Dans ton cas, la syntaxe fonctionnelle est la suivante :

"c:\program files\dipisoft\sendmail\sendmail.exe" /u:toto@pinpon-solutions.net /t:test /m:c:test.txt /f:c:\Documents and Settings\toto\Mes documents\fichier excel source 2010.xls /e:toto@pinpon-solutions.net /p:25 /s:smtp.orange.fr /l

Je sais, ça fait bizarre de mettre de spécifier des noms de dossiers/fichiers contenant des espaces sans utiliser les double-quote mais ça fonctionne. En revanche, il ne faut pas oublier celles qui concernent l'appel à l'exécutable (à cause de l'espace de Program files), sinon c'est au système que ça va déplaire ! A moins que tu n'utilises le nom court Progra~1...

Voilà, n'hésite pas à revenir vers moi si malgré ces explications tu continues à rencontrer des problèmes.


Réaction n°49 

par Minipinpon le 29/06/2010 @ 15:13

Bonjour,

tout d'abord félicitations pour votre esprit freeware bien rare aujourd'hui.

je me permets de vous soumettr eun problème que je n'arrive pas à résoudre.

Je souhaite automatiser l'envoi quotidien d'un fichier excel.

quand je le fait via la fenêtre, pas de soucis ca marche impeccablement.

Cependant lorsuqe je cherche à le faire ne ligne de commande, il me renvoit à chaque fois une erreur comme quoi l'application sendmail n'est pâs reconnue comme une commande interne ou esterne, un executable ......

j'ai tapé en fenetre MSDOS

sendmail /u:toto /t:test /m:test /f:C:\Documents and Settings\toto\Mes documents\un deux trois 2010.xls /e:toto /p:25 /s:smtp.orange.fr /@tutute.net /r /l

je vais peut ete vous faire rire mais on fait comment ?

mes maigres connaissances en inforamtique ne me permettent pas de trouver seul la solution.

d'avance merci pour votre aide.

[réponse de damien, le 29/06/2010 à 16h03]   Attention, cette réponse fait référence à une ancienne syntaxe de SendMail

L'ouverture de la fenêtre d'invite de commande MSDOS s'est probablement faite dans le dossier de ton profil (c:\document and settings\ton_profil) et donc forcément, l'appel de Sendmail échoue puisque ce dernier est installé dans un dossier qui ne se trouve pas dans le PATH.

Trois solutions :

  • soit tu ajoutes le répertoire d'installation dans la variable d'environnement PATH (clic droit sur le poste de travail, propriétés, onglet "Avancé", bouton "Variables d'environnement", ...)
  • soit tu te places dans le répertoire de Sendmail (cd "c:\program files\dipisoft\sendmail" par exemple) avant de lancer ta ligne de commande
  • soit tu spécifies le chemin complet de Sendmail lorsque tu l'invoques. Donc ta ligne de commande donnerait :
    "c:\program files\dipisoft\sendmail\sendmail.exe" /u:toto /t:test /m:test /f:C:\Documents and Settings\toto\Mes documents\un deux trois 2010.xls /e:toto /p:25 /s:smtp.orange.fr /@tutute.net /r /l

J'espère que ces explications seront suffisantes. Je ne peux pas faire plus, je suis au boulot là...