Script vbs d'envoi de mail en ligne de commande

Contenu du snippet

Script VBS d'envoi de mail en ligne de commande

Syntaxe :
sendmail -e<expediteur> -d<destinataire> -o<objet> -m<message> [-s<signature>] [-p<piece-jointe>]
sendmail /e<expediteur> /d<destinataire> /o<objet> /m<message> /s<signature> /p<piece-jointe>
Paramètres obligatoires :
<expediteur> : adresse email de l'expéditeur
<destinataire> : adresse email du destinataire
<objet> : objet (titre) du message
<message> : corps du message
Dans le cas d'un message sur plusieurs lignes,
utiliser la séquence "\n" pour chaque retour à la ligne
Si le message se réduit à un nom de fichier (existant),
ce fichier sera lu et constituera le corps du message
Paramètres facultatifs :
<signature> : signature (peut-être un nom de fichier texte)
<piece-jointe> : nom de fichier quelconque en pièce-jointe
NB : les chaines et nom de fichier sont à encadrer par des guillemets
s'ils comportent des espaces

:) Ce n’ai pas mon scripte j’ai le trouver dans le NET. .

Source / Exemple :


Dim args, fso, f,shell
Set fso   = WScript.CreateObject("Scripting.FileSystemObject")
Set shell = WScript.CreateObject("WScript.Shell")
Set args  = Wscript.Arguments
ForReading=1

nbargs=args.count
defmoteur="cscript"
If nbargs=0 or testarg("?") or testarg("h") Then Syntaxe ""
' Test du moteur utilisé
TestHost

If not testarg("e") then Syntaxe "Email expéditeur absent"
If not testarg("d") then Syntaxe "Email destinataire absent"
If not testarg("o") then Syntaxe "Objet absent"
If not testarg("m") then Syntaxe "Message absent"

Exped=getarg("e")
If not IsValidEmail(Exped) Then  Syntaxe "Email expéditeur invalide"
Dest=getarg("d")
If not IsValidEmail(Dest) Then  Syntaxe "Email destinataire invalide"
Objet=getarg("o")
Mess=getarg("m")
body=GetString(Mess)
If testarg("s") Then
	Sign=getarg("s")
	body=body & VBCRLF & GetString(Sign)
	End If
Set objEmail = CreateObject("CDO.Message")
objEmail.From = Exped
objEmail.To = Dest
objEmail.Subject = Objet
objEmail.Textbody = body
If testarg("p") Then
	pj=getarg("p")
	If fso.FileExists(pj) Then objEmail.AddAttachment pj
	end if		
objEmail.Send
Wscript.quit
'--------------------------------------------------------------------
' Sous programme de test du moteur
Sub TestHost
dim rep
strFullName =lcase(WScript.FullName)
strappli=lcase(Wscript.ScriptFullName)
i=InStr(1,strFullName,".exe",1)
j=InStrRev(strFullName,"\",i,1)
strCommand=Mid(strFullName,j+1,i-j-1)
if strCommand<>defmoteur then
	rep=MsgBox( _
	"Pour faciliter l'affichage, il est recommandé" & VBCRLF & _
	"de lancer ce script avec """ & defmoteur & """" & VBCRLF & _ 
	"Cela peut être rendu permanent avec la commande" & VBCRLF & _
	"cscript //H:" & defmoteur &" //S /Nologo" & VBCRLF & _
	"Voulez-vous que ce soit fait automatiquement?", _
	vbYesNo + vbQuestion,strappli)
	if rep=vbYes  then 
		nomcmd="setscript.bat"
		Set ficcmd = fso.CreateTextFile(nomcmd)
		ficcmd.writeline "@echo off"
		ficcmd.writeline "cscript //H:" & defmoteur & " //S /Nologo"
		ficcmd.writeline "pause"
		params=""
		For i = 0 To nbargs-1 
			params=params & " " & args(i)
			next
		ficcmd.writeline chr(34) & strappli & chr(34) & params
		ficcmd.writeline "pause"
		ficcmd.close
		shell.Run nomcmd, SW_SHOWNORMAL,true
	    WScript.Quit
		end if
	end if
end sub
'--------------------------------------------------------------------
Sub Syntaxe(info)
If info="" Then
	msg=      "Script d'envoi de message (texte) en ligne de commande" & VBCRLF
	msg=msg & "JC BELLAMY © 2002" & VBCRLF 
Else
	msg="*** " & info & " ***" & VBCRLF
	End If
msg=msg & "------------------------------------------" & VBCRLF
msg=msg & "Syntaxe : " & VBCRLF
msg=msg & " sendmail -e<expediteur> -d<destinataire> -o<objet> -m<message>" & VBCRLF
msg=msg & "          [-s<signature>] [-p<piece-jointe>]" & VBCRLF
msg=msg & " sendmail /e<expediteur> /d<destinataire> /o<objet> /m<message>" & VBCRLF
msg=msg & "          /s<signature> /p<piece-jointe>" & VBCRLF
msg=msg & "Paramètres obligatoires :" & VBCRLF 
msg=msg & "     <expediteur>   : adresse email de l'expéditeur" & VBCRLF
msg=msg & "     <destinataire> : adresse email du destinataire" & VBCRLF
msg=msg & "     <objet>        : objet (titre) du message" & VBCRLF
msg=msg & "     <message>      : corps du message" & VBCRLF
msg=msg & "                      Dans le cas d'un message sur plusieurs lignes," & VBCRLF
msg=msg & "                      utiliser la séquence ""\n"" pour chaque retour à la ligne" & VBCRLF
msg=msg & "                      Si le message se réduit à un nom de fichier (existant)," & VBCRLF
msg=msg & "                      ce fichier sera lu et constituera le corps du message"  & VBCRLF
msg=msg & "Paramètres facultatifs :"  & VBCRLF
msg=msg & "     <signature>    : signature (peut-être un nom de fichier texte)" & VBCRLF
msg=msg & "     <piece-jointe> : nom de fichier quelconque en pièce-jointe" & VBCRLF
msg=msg & "NB : les chaines et noms de fichier sont à encadrer par des guillemets" & VBCRLF
msg=msg & "     s'ils comportent des espaces" & VBCRLF & VBCRLF
msg=msg & "Exemples :"& VBCRLF
msg=msg & " sendmail -eJean-Claude.Bellamy@wanadoo.fr -dbillg@microsoft.com -o""About VBS""" & VBCRLF
msg=msg & "    -m""VBSCript is a\nvery exciting tool!"" -sJCB -pm:\bitmaps\img.gif" & VBCRLF
msg=msg & " sendmail -ejc.bellamy@free.fr -dbillg@microsoft.com -o""More about VBS...""" & VBCRLF 
msg=msg & "    -m""d:\mes documents\txt\buglist.txt"" -sm:\texte\signature.txt" & VBCRLF & VBCRLF
wscript.echo msg
wscript.quit
End Sub
'--------------------------------------------------------------------
Function IsValidEmail(str)
Dim re
Set re = New RegExp
re.pattern = "\w+\@[.\w]+"  'Modèle du style "nnnnnn@dddddd"
IsValidEmail=re.Test(str)
End Function
'--------------------------------------------------------------------
Function testarg(param)
testarg=false
For i = 0 To nbargs-1
	curarg=lcase(args(i))
	If left(curarg,1)="/" or left(curarg,1)="-" Then
		If mid(curarg,2,len(param))=param Then
			testarg=true
			exit function
			End If
		End If
	Next
End Function
'--------------------------------------------------------------------
Function getarg(param)
getarg=""
For i = 0 To nbargs-1
	curarg=lcase(args(i))
	If left(curarg,1)="/" or left(curarg,1)="-" Then
		If mid(curarg,2,len(param))=param Then
			ch=mid(args(i),2+len(param))
			If (left(ch,1)="""") and (right(ch,1)="""") Then ch=mid(ch,2,len(ch)-2)
			getarg= ch
			exit function
			End If
		End If
	Next
End Function
'--------------------------------------------------------------------
Function GetString(str)
dim f
If fso.FileExists(str) Then
	set f=fso.OpenTextFile(str,ForReading)
	GetString=f.ReadAll
	f.Close
else
	GetString=Replace(str,"\n",VBCRLF,1,-1,1)
	End If
End Function
'--------------------------------------------------------------------

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.