sendMail vbs
Voici un petit script VBS permettant d'envoyer un mail en passant par un serveur SMTP ne nécessitant pas d'authentification.
Oui, en VBscript [1].
Il peut être appelé comme ceci depuis un script .bat:
c:\progra~1\sendmail\sendmail.vbs /smtpserver:172.1.1.9 /smtpfrom:from@domaine.com /smtpto:to@domaine.com /subject:"Hey hey" /body:"oh oh"
à condition de l'avoir enregistré dans c:\progra~1\sendmail\ Of course
Option Explicit Dim args Dim smtpserver 'Adresse du serveur de messagerie / relais smtp Dim smtpto, smtpfrom, subject, body, helpusage helpusage = "sendmail.vbs /smtpserver:172.18.0.1.4 /smtpto:destinataire@mail.com /smtpfrom:expediteur@mail.com /subject:""sujet du message"" /body:""message .. blah blah""" Set args = Wscript.Arguments.Named if args.Exists("smtpserver") Then smtpserver = args.Item("smtpserver") Else WScript.Echo "parametre manquant smtpserver usage: sendmail.vbs /smtpserver:172.18.0.1.4 " WScript.Quit 1 End if if args.Exists("smtpto") Then smtpto = args.Item("smtpto") Else WScript.Echo "parametre manquant smtpto usage: " & helpusage WScript.Quit 1 End if if args.Exists("smtpfrom") Then smtpfrom = args.Item("smtpfrom") Else WScript.Echo "parametre manquant smtpfrom usage: " & helpusage WScript.Quit 1 End if if args.Exists("subject") Then subject = args.Item("subject") Else WScript.Echo "parametre manquant subject usage: " & helpusage WScript.Quit 1 End if if args.Exists("body") Then body = args.Item("body") Else WScript.Echo "parametre manquant body usage: " & helpusage WScript.Quit 1 End if Call EnvoyerEmail(smtpserver,smtpto, smtpfrom,subject,body) Public Function EnvoyerEmail(varSMTPRelay, varDestEmail, varSenderMail, varSujetMail, varMessageMail) Dim objMessage Set objMessage = CreateObject("CDO.Message") objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = varSMTPRelay objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objMessage.Configuration.Fields.Update objMessage.Subject = varSujetMail objMessage.Sender = varSenderMail objMessage.From = varSenderMail objMessage.To = varDestEmail objMessage.TextBody = varMessageMail objMessage.Send Set objMessage = Nothing End Function
Note
[1] En 2018, je me sens obligé de justifier l'usage de VBS. Sur un serveur Windows qui fait ce qu'il doit faire. Je ne veux pas agrandir sa surface d'exposition en ajoutant un interpréteur ou un programme tiers. On dispose donc nativement en langages de scripting: batch ( qui ne permet pas d'envoyer d'email) VBScript et Powershell. Ce dernier est contraint à quelques avertissements de sécurité qu'il faut Bypasser. Il ne reste donc que VBS. Voila, ce n'est pas parce que je suis nul et ne sait faire que du VBS, c'est juste le choix le plus cohérent à mon avis. De la même façon, récemment j'ai scripté des notifications sur un serveur de GED, j'ai choisi Python simplement parce qu'il était déjà présent sur le serveur (dev trop spécifique pour faire l'objet d'un billet de blog)