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)
