1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
' ----------------------------------------------------------
' 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>]
' Parames obligatoires :
' <expediteur> : adresse email de l'expteur
' <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 sence "\n" pour chaque retour a ligne
' Si le message se rit n nom de fichier (existant),
' ce fichier sera lu et constituera le corps du message
' Parames facultatifs :
' <signature> : signature (peut-e un nom de fichier texte)
' <piece-jointe> : nom de fichier quelconque en pi-jointe
' NB : les chaines et nom de fichier sont ncadrer par des guillemets
' s'ils comportent des espaces
''
' JC BELLAMY 2002
' ----------------------------------------------------------
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 utilisestHost
If not testarg("e") then Syntaxe "Email expteur 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 expteur 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 e 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 & "Parames obligatoires :" & VBCRLF
msg=msg & " <expediteur> : adresse email de l'expteur" & 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 sence ""\n"" pour chaque retour a ligne" & VBCRLF
msg=msg & " Si le message se rit n nom de fichier (existant)," & VBCRLF
msg=msg & " ce fichier sera lu et constituera le corps du message" & VBCRLF
msg=msg & "Parames facultatifs :" & VBCRLF
msg=msg & " <signature> : signature (peut-e un nom de fichier texte)" & VBCRLF
msg=msg & " <piece-jointe> : nom de fichier quelconque en pi-jointe" & VBCRLF
msg=msg & "NB : les chaines et noms de fichier sont ncadrer 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 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
'-------------------------------------------------------------------- |