sendMail vbs

vbscript.png

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)

Page top