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
'--------------------------------------------------------------------
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.