Question [Concours Scripting]Mail_Send (validé)
- Lemaire Patrice
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 40
- Remerciements reçus 0
il y a 18 ans 3 mois #1367
par Lemaire Patrice
[Concours Scripting]Mail_Send (validé) a été créé par Lemaire Patrice
[code:1]# Mail_Send_1A.ps1
################################################################################
# Fonction : Script pour l envoi de mail via serveur SMTP
################################################################################
# Description :
# Le Script verifie si tous ses parametres nessecaires sont existants (non null)
# $MailServer Chaine representant le serveur SMTP
# $MailFrom Chaine Adresse Expediteur
# $MailTo Chaine ou Tableau Adresse destinataire
# $MailSubject Chaine de sujet du mail
# $MailBody Chaine ou Tableau de texte pouvant etre un chemin complet vers fichier a integrer
# Dans le cas d un fichier on fera preceder le chemin complet de <FILE>
# D autres parametres sont optionnels
# $MailPriority Priorite du mail (High / Low / Normal)
# $MailCC Chaine ou Tableau Adresse destinataire de copie
# $MailBcc Chaine ou Tableau Adresse destinataire de copie cachee
# $MailAttach Chaine ou Tableau de chemin complet vers un fichier a joindre ou un repertoire
# Dans le cas d un repertoire on fera preceder le chemin complet de <REP>
# Seront alors integres tous les fichiers en *.* du repertoire pointe
# Et si tout est OK envoi le mail
#
# Les parametres en question doivent existes dans l environnement d execution de se script
# Il ne les declares pas lui meme . Il ne fait que les utiliser
# Leur existance est donc le prerequis a l'appel de se script.
##################################################################################
# Version 1A : PLEM le 05/12/2007 -- Premiere version
##################################################################################
######################################### Pour Debug
#$MailServer = \"MyServeurSMTP\"
#$MailFrom = \"Emetteur@domaine.com\"
#$MailTo = \"Destinataire@domaine.com\" #,\"Destinataire2@domaine.com\"
#$MailSubject = \"Mail de Test PowerShell\"
#$MailBody = \"<FILE>C:\Windows\temps\test.txt\",\"Contenu`nFixe`nde Mail\",\"<FILE>C:\boot.ini\"
#$MailPriority = \"High\"
#$MailCC = \"Destinataire.Copie@domaine.com\" #,\"Destinataire.Copie2@Domaine.com\"
#$MailBcc = \"Destinataire.Cache@domaine.com\" #,\"Destinataire.Cache2@domaine.com\"
#$MailAttach = \"<REP>C:\temp\\" ,\"C:\Windows\Temp\toto.log\"
#########################################
################################################
# Declaration et Fonction d'envoi des messages #
################################################
function Mail_Log
{
param ([string]$Msg, [System.Management.Automation.ErrorCategory]$Cat)
if ($MailLog -ne $null)
{Add-Content -Path $MailLog -Value $Msg}
else
{Write-Host -Message $Msg -Category $Cat}
}
###########################
# Controle des parametres #
###########################
#
# Controle d existance des parametres obligatoires, From, To, Subject et Body
#
if ($MailServer -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque le serveur SMTP ***\" InvalidArgument
return $FALSE
}
if ($MailFrom -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque un emetteur ***\" InvalidArgument
return $FALSE
}
if ($MailTo -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque un destinataire ***\" InvalidArgument
return $FALSE
}
if ($MailSubject -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque un sujet ***\" InvalidArgument
return $FALSE
}
if ($MailBody -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque un contenu ***\" InvalidArgument
return $FALSE
}
#
# Controle de coherence des parametres, Ceux qui sont censes etre des email(@.) ou des chemins complets de fichiers
#
if ($MailFrom -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse expediteur invalide *** $MailFrom\" InvalidArgument
return $FALSE
}
if ($MailTo -is \"System.Array\"«»)
{
foreach ($Adr in $MailTo)
{
if ($Adr -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $Adr\" InvalidArgument
return $FALSE
}
}
}
else
{
if ($MailTo -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $MailTo\" InvalidArgument
return $FALSE
}
}
if ($MailBody -is \"System.Array\"«»)
{
foreach ($Elt in $MailBody)
{
if ($Elt -like \"<FILE>*\"«»)
{
$File = $Elt.SubString(6,$Elt.Length-6)
if (! [System.IO.File]::Exists($File))
{
Mail_Log \"Mail_Send ERREUR : *** Body <FILE> inexistant *** $Elt\" InvalidArgument
return $FALSE
}
}
}
}
else
{
if ($MailBody -like \"<FILE>*\"«»)
{
$File = $MailBody.SubString(6,$MailBody.Length-6)
if (![System.IO.File]::Exists($File))
{
Mail_Log \"Mail_Send ERREUR : *** Body <FILE> inexistant *** $MailBody\" InvalidArgument
return $FALSE
}
}
}
if ($MailCC -ne $null)
{
if ($MailCC -is \"System.Array\"«»)
{
foreach ($Adr in $MailCC)
{
if ($Adr -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $Adr\" InvalidArgument
return $FALSE
}
}
}
else
{
if ($MailCC -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $MailCC\" InvalidArgument
return $FALSE
}
}
}
if ($MailBcc -ne $null)
{
if ($MailBcc -is \"System.Array\"«»)
{
foreach ($Adr in $MailBcc)
{
if ($Adr -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $Adr\" InvalidArgument
return $FALSE
}
}
}
else
{
if ($MailBcc -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $MailBcc\" InvalidArgument
return $FALSE
}
}
}
if ($MailPriority -ne $null)
{
if ($MailPriority -ne \"High\"«»)
{
if ($MailPriority -ne \"Low\"«»)
{
if ($MailPriority -ne \"Normal\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Priorite invalide *** $MailPriority\" InvalidArgument
return $FALSE
}
}
}
}
else
{
$MailPriority = \"Normal\"
}
if ($MailAttach -ne $null)
{
if ($MailAttach -is \"System.Array\"«»)
{
foreach ($Elt in $MailAttach)
{
if ($Elt -like \"<REP>*\" )
{
$Dir = $Elt.SubString(5,$Elt.Length-5)
if (![System.IO.Directory]::Exists(\"$Dir\"«»))
{
Mail_Log \"Mail_Send ERREUR : *** repertoire joint inexistant *** $Dir\" InvalidArgument
return $FALSE
}
}
else
{
if (![System.IO.File]::Exists(\"$Elt\"«»))
{
Mail_Log \"Mail_Send ERREUR : *** Piece jointe inexistante *** $Elt\" InvalidArgument
return $FALSE
}
}
}
}
else
{
if ($MailAttach -like \"<REP>*\" )
{
$Dir = $MailAttach.SubString(5,$MailAttach.Length-5)
if (![System.IO.Directory]::Exists(\"$Dir\"«»))
{
Mail_Log \"Mail_Send ERREUR : *** repertoire joint inexistant *** $Dir\" InvalidArgument
return $FALSE
}
}
else
{
if (![System.IO.File]::Exists(\"$MailAttach\"«»))
{
Mail_Log \"Mail_Send ERREUR : *** Piece jointe inexistante *** $MailAttach\" InvalidArgument
return $FALSE
}
}
}
}
#
# Maintenant que l on a verifier TOUS les parametres on vas constituer le mail et l envoyer !!!
#
###########################
# Constitution du message #
###########################
trap { Mail_Log \"Mail_Send ERREUR : $$ n` $Error\" OperationStopped
return $FALSE }
$Mail_Client = New-Object System.Net.Mail.SmtpClient
$Mail_Client.Host = $MailServer
$Mail_Client.Credentials = [System.Net.CredentialCache]::«»DefaultNetworkCredentials
$Mail_Message = New-Object System.Net.Mail.MailMessage
$Mail_Message.From = $MailFrom
$Mail_Message.Subject = $MailSubject
$Mail_Message.Priority = [System.Net.Mail.MailPriority]$MailPriority
$Mail_Adresses = $Mail_Message.To
if ($MailTo -is \"System.Array\"«»)
{
foreach ($Adr in $MailTo)
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $Adr
$Mail_Adresses.Add($Mail_Adress)
}
}
else
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $MailTo
$Mail_Adresses.Add($Mail_Adress)
}
$WorkBody = \"\"
if ($MailBody -is \"System.Array\"«»)
{
foreach ($Elt in $MailBody)
{
if ($Elt -like \"<FILE>*\"«»)
{
$File = $Elt.SubString(6,$Elt.Length-6)
$WorkBody += \"`n\" + (Get-Content -Path $File)
}
else
{
$WorkBody += \"`n\" + $Elt
}
}
}
else
{
if ($MailBody -like \"<FILE>*\"«»)
{
$File = $MailBody.SubString(6,$MailBody.Length-6)
$WorkBody = Get-Content -Path $File
}
else
{
$WorkBody = $MailBody
}
}
$Mail_Message.Body = $WorkBody
$Mail_AdrCC = $Mail_Message.CC
if ($MailCC -ne $null)
{
if ($MailCC -is \"System.Array\"«»)
{
foreach ($Adr in $MailCC)
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $Adr
$Mail_AdrCC.Add($Mail_Adress)
}
}
else
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $MailCC
$Mail_AdrCC.Add($Mail_Adress)
}
}
$Mail_AdrBcc = $Mail_Message.Bcc
if ($MailBcc -ne $null)
{
if ($MailBcc -is \"System.Array\"«»)
{
foreach ($Adr in $MailBcc)
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $Adr
$Mail_AdrBcc.Add($Mail_Adress)
}
}
else
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $MailBcc
$Mail_AdrBcc.Add($Mail_Adress)
}
}
$Mail_Attachments = $Mail_Message.Attachments
if ($MailAttach -ne $null)
{
if ($MailAttach -is \"System.Array\"«»)
{
foreach ($Elt in $MailAttach)
{
if ($Elt -like \"<REP>*\" )
{
$Dir = $Elt.SubString(5,$Elt.Length-5)
foreach ($File in (Get-ChildItem -Path $Dir -Include \"*.*\" -Name))
{
$File = $Dir + $File
$Mail_Attachment = New-Object System.Net.Mail.Attachment $File
$Mail_Attachments.Add($Mail_Attachment)
}
}
else
{
$File = $Elt
$Mail_Attachment = New-Object System.Net.Mail.Attachment $File
$Mail_Attachments.Add($Mail_Attachment)
}
}
}
else
{
if ($MailAttach -like \"<REP>*\" )
{
$Dir = $MailAttach.SubString(5,$MailAttach.Length-5)
foreach ($File in (Get-ChildItem -Path $Dir -Include \"*.*\" -Name))
{
$File = $Dir + $File
$Mail_Attachment = New-Object System.Net.Mail.Attachment $File
$Mail_Attachments.Add($Mail_Attachment)
}
}
else
{
$File = $MailAttach
$Mail_Attachment = New-Object System.Net.Mail.Attachment $File
$Mail_Attachments.Add($Mail_Attachment)
}
}
}
####################################
# Quelle epopee, enfin on envoi !! #
####################################
$Mail_Client.Send($Mail_Message)
Return $True
[/code:1]<br><br>Message édité par: robin, à: 18/12/07 09:33
################################################################################
# Fonction : Script pour l envoi de mail via serveur SMTP
################################################################################
# Description :
# Le Script verifie si tous ses parametres nessecaires sont existants (non null)
# $MailServer Chaine representant le serveur SMTP
# $MailFrom Chaine Adresse Expediteur
# $MailTo Chaine ou Tableau Adresse destinataire
# $MailSubject Chaine de sujet du mail
# $MailBody Chaine ou Tableau de texte pouvant etre un chemin complet vers fichier a integrer
# Dans le cas d un fichier on fera preceder le chemin complet de <FILE>
# D autres parametres sont optionnels
# $MailPriority Priorite du mail (High / Low / Normal)
# $MailCC Chaine ou Tableau Adresse destinataire de copie
# $MailBcc Chaine ou Tableau Adresse destinataire de copie cachee
# $MailAttach Chaine ou Tableau de chemin complet vers un fichier a joindre ou un repertoire
# Dans le cas d un repertoire on fera preceder le chemin complet de <REP>
# Seront alors integres tous les fichiers en *.* du repertoire pointe
# Et si tout est OK envoi le mail
#
# Les parametres en question doivent existes dans l environnement d execution de se script
# Il ne les declares pas lui meme . Il ne fait que les utiliser
# Leur existance est donc le prerequis a l'appel de se script.
##################################################################################
# Version 1A : PLEM le 05/12/2007 -- Premiere version
##################################################################################
######################################### Pour Debug
#$MailServer = \"MyServeurSMTP\"
#$MailFrom = \"Emetteur@domaine.com\"
#$MailTo = \"Destinataire@domaine.com\" #,\"Destinataire2@domaine.com\"
#$MailSubject = \"Mail de Test PowerShell\"
#$MailBody = \"<FILE>C:\Windows\temps\test.txt\",\"Contenu`nFixe`nde Mail\",\"<FILE>C:\boot.ini\"
#$MailPriority = \"High\"
#$MailCC = \"Destinataire.Copie@domaine.com\" #,\"Destinataire.Copie2@Domaine.com\"
#$MailBcc = \"Destinataire.Cache@domaine.com\" #,\"Destinataire.Cache2@domaine.com\"
#$MailAttach = \"<REP>C:\temp\\" ,\"C:\Windows\Temp\toto.log\"
#########################################
################################################
# Declaration et Fonction d'envoi des messages #
################################################
function Mail_Log
{
param ([string]$Msg, [System.Management.Automation.ErrorCategory]$Cat)
if ($MailLog -ne $null)
{Add-Content -Path $MailLog -Value $Msg}
else
{Write-Host -Message $Msg -Category $Cat}
}
###########################
# Controle des parametres #
###########################
#
# Controle d existance des parametres obligatoires, From, To, Subject et Body
#
if ($MailServer -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque le serveur SMTP ***\" InvalidArgument
return $FALSE
}
if ($MailFrom -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque un emetteur ***\" InvalidArgument
return $FALSE
}
if ($MailTo -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque un destinataire ***\" InvalidArgument
return $FALSE
}
if ($MailSubject -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque un sujet ***\" InvalidArgument
return $FALSE
}
if ($MailBody -eq $null)
{
Mail_Log \"Mail_Send ERREUR : *** Il Manque un contenu ***\" InvalidArgument
return $FALSE
}
#
# Controle de coherence des parametres, Ceux qui sont censes etre des email(@.) ou des chemins complets de fichiers
#
if ($MailFrom -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse expediteur invalide *** $MailFrom\" InvalidArgument
return $FALSE
}
if ($MailTo -is \"System.Array\"«»)
{
foreach ($Adr in $MailTo)
{
if ($Adr -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $Adr\" InvalidArgument
return $FALSE
}
}
}
else
{
if ($MailTo -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $MailTo\" InvalidArgument
return $FALSE
}
}
if ($MailBody -is \"System.Array\"«»)
{
foreach ($Elt in $MailBody)
{
if ($Elt -like \"<FILE>*\"«»)
{
$File = $Elt.SubString(6,$Elt.Length-6)
if (! [System.IO.File]::Exists($File))
{
Mail_Log \"Mail_Send ERREUR : *** Body <FILE> inexistant *** $Elt\" InvalidArgument
return $FALSE
}
}
}
}
else
{
if ($MailBody -like \"<FILE>*\"«»)
{
$File = $MailBody.SubString(6,$MailBody.Length-6)
if (![System.IO.File]::Exists($File))
{
Mail_Log \"Mail_Send ERREUR : *** Body <FILE> inexistant *** $MailBody\" InvalidArgument
return $FALSE
}
}
}
if ($MailCC -ne $null)
{
if ($MailCC -is \"System.Array\"«»)
{
foreach ($Adr in $MailCC)
{
if ($Adr -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $Adr\" InvalidArgument
return $FALSE
}
}
}
else
{
if ($MailCC -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $MailCC\" InvalidArgument
return $FALSE
}
}
}
if ($MailBcc -ne $null)
{
if ($MailBcc -is \"System.Array\"«»)
{
foreach ($Adr in $MailBcc)
{
if ($Adr -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $Adr\" InvalidArgument
return $FALSE
}
}
}
else
{
if ($MailBcc -inotlike \"*@*.*\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Adresse destinataire invalide *** $MailBcc\" InvalidArgument
return $FALSE
}
}
}
if ($MailPriority -ne $null)
{
if ($MailPriority -ne \"High\"«»)
{
if ($MailPriority -ne \"Low\"«»)
{
if ($MailPriority -ne \"Normal\"«»)
{
Mail_Log \"Mail_Send ERREUR : *** Priorite invalide *** $MailPriority\" InvalidArgument
return $FALSE
}
}
}
}
else
{
$MailPriority = \"Normal\"
}
if ($MailAttach -ne $null)
{
if ($MailAttach -is \"System.Array\"«»)
{
foreach ($Elt in $MailAttach)
{
if ($Elt -like \"<REP>*\" )
{
$Dir = $Elt.SubString(5,$Elt.Length-5)
if (![System.IO.Directory]::Exists(\"$Dir\"«»))
{
Mail_Log \"Mail_Send ERREUR : *** repertoire joint inexistant *** $Dir\" InvalidArgument
return $FALSE
}
}
else
{
if (![System.IO.File]::Exists(\"$Elt\"«»))
{
Mail_Log \"Mail_Send ERREUR : *** Piece jointe inexistante *** $Elt\" InvalidArgument
return $FALSE
}
}
}
}
else
{
if ($MailAttach -like \"<REP>*\" )
{
$Dir = $MailAttach.SubString(5,$MailAttach.Length-5)
if (![System.IO.Directory]::Exists(\"$Dir\"«»))
{
Mail_Log \"Mail_Send ERREUR : *** repertoire joint inexistant *** $Dir\" InvalidArgument
return $FALSE
}
}
else
{
if (![System.IO.File]::Exists(\"$MailAttach\"«»))
{
Mail_Log \"Mail_Send ERREUR : *** Piece jointe inexistante *** $MailAttach\" InvalidArgument
return $FALSE
}
}
}
}
#
# Maintenant que l on a verifier TOUS les parametres on vas constituer le mail et l envoyer !!!
#
###########################
# Constitution du message #
###########################
trap { Mail_Log \"Mail_Send ERREUR : $$ n` $Error\" OperationStopped
return $FALSE }
$Mail_Client = New-Object System.Net.Mail.SmtpClient
$Mail_Client.Host = $MailServer
$Mail_Client.Credentials = [System.Net.CredentialCache]::«»DefaultNetworkCredentials
$Mail_Message = New-Object System.Net.Mail.MailMessage
$Mail_Message.From = $MailFrom
$Mail_Message.Subject = $MailSubject
$Mail_Message.Priority = [System.Net.Mail.MailPriority]$MailPriority
$Mail_Adresses = $Mail_Message.To
if ($MailTo -is \"System.Array\"«»)
{
foreach ($Adr in $MailTo)
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $Adr
$Mail_Adresses.Add($Mail_Adress)
}
}
else
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $MailTo
$Mail_Adresses.Add($Mail_Adress)
}
$WorkBody = \"\"
if ($MailBody -is \"System.Array\"«»)
{
foreach ($Elt in $MailBody)
{
if ($Elt -like \"<FILE>*\"«»)
{
$File = $Elt.SubString(6,$Elt.Length-6)
$WorkBody += \"`n\" + (Get-Content -Path $File)
}
else
{
$WorkBody += \"`n\" + $Elt
}
}
}
else
{
if ($MailBody -like \"<FILE>*\"«»)
{
$File = $MailBody.SubString(6,$MailBody.Length-6)
$WorkBody = Get-Content -Path $File
}
else
{
$WorkBody = $MailBody
}
}
$Mail_Message.Body = $WorkBody
$Mail_AdrCC = $Mail_Message.CC
if ($MailCC -ne $null)
{
if ($MailCC -is \"System.Array\"«»)
{
foreach ($Adr in $MailCC)
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $Adr
$Mail_AdrCC.Add($Mail_Adress)
}
}
else
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $MailCC
$Mail_AdrCC.Add($Mail_Adress)
}
}
$Mail_AdrBcc = $Mail_Message.Bcc
if ($MailBcc -ne $null)
{
if ($MailBcc -is \"System.Array\"«»)
{
foreach ($Adr in $MailBcc)
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $Adr
$Mail_AdrBcc.Add($Mail_Adress)
}
}
else
{
$Mail_Adress = New-Object System.Net.Mail.MailAddress $MailBcc
$Mail_AdrBcc.Add($Mail_Adress)
}
}
$Mail_Attachments = $Mail_Message.Attachments
if ($MailAttach -ne $null)
{
if ($MailAttach -is \"System.Array\"«»)
{
foreach ($Elt in $MailAttach)
{
if ($Elt -like \"<REP>*\" )
{
$Dir = $Elt.SubString(5,$Elt.Length-5)
foreach ($File in (Get-ChildItem -Path $Dir -Include \"*.*\" -Name))
{
$File = $Dir + $File
$Mail_Attachment = New-Object System.Net.Mail.Attachment $File
$Mail_Attachments.Add($Mail_Attachment)
}
}
else
{
$File = $Elt
$Mail_Attachment = New-Object System.Net.Mail.Attachment $File
$Mail_Attachments.Add($Mail_Attachment)
}
}
}
else
{
if ($MailAttach -like \"<REP>*\" )
{
$Dir = $MailAttach.SubString(5,$MailAttach.Length-5)
foreach ($File in (Get-ChildItem -Path $Dir -Include \"*.*\" -Name))
{
$File = $Dir + $File
$Mail_Attachment = New-Object System.Net.Mail.Attachment $File
$Mail_Attachments.Add($Mail_Attachment)
}
}
else
{
$File = $MailAttach
$Mail_Attachment = New-Object System.Net.Mail.Attachment $File
$Mail_Attachments.Add($Mail_Attachment)
}
}
}
####################################
# Quelle epopee, enfin on envoi !! #
####################################
$Mail_Client.Send($Mail_Message)
Return $True
[/code:1]<br><br>Message édité par: robin, à: 18/12/07 09:33
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 18 ans 3 mois #1368
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:[Concours Scripting]Mail_Send
Beau travail! Je n'ai pas encore testé, mais à la lecture ça a l'air impeccablement écrit et très complet.
Par contre, je suis surpris du choix de ne pas accepter de paramètres et d'exiger que les variables soient assignées avant l'appel au script. Pour info, quelles raisons t'ont poussées à faire ce choix?
Janel
Par contre, je suis surpris du choix de ne pas accepter de paramètres et d'exiger que les variables soient assignées avant l'appel au script. Pour info, quelles raisons t'ont poussées à faire ce choix?
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Robin Lemesle
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 260
- Remerciements reçus 0
il y a 18 ans 3 mois #1371
par Robin Lemesle
Robin MVP PowerShell
Réponse de Robin Lemesle sur le sujet Re:[Concours Scripting]Mail_Send (validé)
Beau travail, surtout sur le Controle d existance des parametres obligatoires.
validé.
validé.
Robin MVP PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Lemaire Patrice
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 40
- Remerciements reçus 0
il y a 18 ans 3 mois #1375
par Lemaire Patrice
Réponse de Lemaire Patrice sur le sujet Re:[Concours Scripting]Mail_Send (validé)
Merci de prendre ce script en compte déjà.
Je voudrais préciser pour ceux que la « Structure » du script pourrait étonner que je suis développeur (un vieux, bougon, dans sa grotte et tout et tout hein), pas administrateur. J’attache donc une importance toute particulière à la structuration du code, bien plus qu’a son optimisation en nombre de lignes. Il est tout à fait possible de rassembler les parties contrôle et chargement des objets dans les mêmes « If », mais je trouve que la lisibilité y aurait perdue.
Pour finir, ceci est mon premier script puisque j’ai commencé ce langage il y a une semaine environ, donc je crains de n’avoir pas utilisé à chaque fois les bonnes méthodes.
L’objectif ?
Pouvoir appeler ce script de n’importe quel autre dans le but d’avoir une information proactive des éventuels problèmes rencontrés par nos taches automatisées (Sauvegardes ? au hasard ^^).
Pour répondre à l’interrogation de Janel, il y a deux raisons :
La première (qui peut n’être que temporaire) c’est que quand j’ai essayé de mettre une ligne Param(…) au début de mon script je me suis fait insulté ^^.
La seconde c’est que je suis extrêmement partagé sur cette idée simplement à cause du nombre de paramètres que cela représente. 9, je trouve cela énorme, de plus, partant du principe que ce script n’a pour seul but que d’être appelé par d’autres, et probablement pas à un seul endroit, il me semble que déclarer une seule fois dans le script appelant les variables nécessaires n’était pas forcement plus mal (Principalement les variables concernant le serveur SMTP, l’expéditeur etc).
Pour finir, je dirais donc que je suis ultra ouvert à toutes suggestions pour que se script soit plus efficace si cela n’en réduit pas la lisibilité (Gare aux sauvages du C hein, qui codent 10 instructions sur une seule ligne ^^).
Je voudrais préciser pour ceux que la « Structure » du script pourrait étonner que je suis développeur (un vieux, bougon, dans sa grotte et tout et tout hein), pas administrateur. J’attache donc une importance toute particulière à la structuration du code, bien plus qu’a son optimisation en nombre de lignes. Il est tout à fait possible de rassembler les parties contrôle et chargement des objets dans les mêmes « If », mais je trouve que la lisibilité y aurait perdue.
Pour finir, ceci est mon premier script puisque j’ai commencé ce langage il y a une semaine environ, donc je crains de n’avoir pas utilisé à chaque fois les bonnes méthodes.
L’objectif ?
Pouvoir appeler ce script de n’importe quel autre dans le but d’avoir une information proactive des éventuels problèmes rencontrés par nos taches automatisées (Sauvegardes ? au hasard ^^).
Pour répondre à l’interrogation de Janel, il y a deux raisons :
La première (qui peut n’être que temporaire) c’est que quand j’ai essayé de mettre une ligne Param(…) au début de mon script je me suis fait insulté ^^.
La seconde c’est que je suis extrêmement partagé sur cette idée simplement à cause du nombre de paramètres que cela représente. 9, je trouve cela énorme, de plus, partant du principe que ce script n’a pour seul but que d’être appelé par d’autres, et probablement pas à un seul endroit, il me semble que déclarer une seule fois dans le script appelant les variables nécessaires n’était pas forcement plus mal (Principalement les variables concernant le serveur SMTP, l’expéditeur etc).
Pour finir, je dirais donc que je suis ultra ouvert à toutes suggestions pour que se script soit plus efficace si cela n’en réduit pas la lisibilité (Gare aux sauvages du C hein, qui codent 10 instructions sur une seule ligne ^^).
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 18 ans 3 mois #1377
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:[Concours Scripting]Mail_Send (validé)
Je comprends tes raisons, mais à mon avis, et d'après mon expérience d'administrateur système, la technique des paramètres est beaucoup plus souple.
Proposer des paramètres permet notamment de rendre le nommage des variables indépendant du contexte (script appelant ou ligne de commande interactive). Alors que là, tu contrains l'utilisateur de ton script à se souvenir des noms de variable à utiliser, et à les déclarer toutes explicitement avant l'appel au script.
Pour ce qui est de l'insulte quand tu as utilisé param(), as-tu fait attention à ce que ce soit la toute première ligne de code de ton script? Tu peux avoir des lignes vides ou des commentaires avant param(), mais aucune autre commande ou instruction.
Tu peux également sous-traiter une partie de la gestion des paramètres directement dans l'instruction param(), comme l'attribution de valeurs par défaut, la vérification du type des variables, ou encore l'affichage d'un message d'erreur si un paramètre a été oublié.
Janel
Proposer des paramètres permet notamment de rendre le nommage des variables indépendant du contexte (script appelant ou ligne de commande interactive). Alors que là, tu contrains l'utilisateur de ton script à se souvenir des noms de variable à utiliser, et à les déclarer toutes explicitement avant l'appel au script.
Pour ce qui est de l'insulte quand tu as utilisé param(), as-tu fait attention à ce que ce soit la toute première ligne de code de ton script? Tu peux avoir des lignes vides ou des commentaires avant param(), mais aucune autre commande ou instruction.
Tu peux également sous-traiter une partie de la gestion des paramètres directement dans l'instruction param(), comme l'attribution de valeurs par défaut, la vérification du type des variables, ou encore l'affichage d'un message d'erreur si un paramètre a été oublié.
Janel
Connexion ou Créer un compte pour participer à la conversation.
- maycry
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 119
- Remerciements reçus 0
il y a 18 ans 3 mois #1386
par maycry
Réponse de maycry sur le sujet Re:[Concours Scripting]Mail_Send (validé)
Bonne lecture je vais prendre exemple ^^^^
Faut dire que mes scripts actuellement son lié sur un project commun de monitoring ^^
je ne l'ai pas testé ce script
mais utile à savoir ^^
j'utillise seulement 6lignes basique pour l'envoi de mail via powershell.
dommage qu'il n'est pas la possibilité d'un imputbox à la vbs nous indiquant les paramétres à rentré par exemple.
j'ai un script vbs qui m'envoit chaque jour le rapport de sauvegarde de ntbackup et létat de mes disques ^^ ton script fonctionnerai pas dans mon cas.mais de toute seul exchange 2007 est équipe de powershell lol
bravo encore sinon ^^
Faut dire que mes scripts actuellement son lié sur un project commun de monitoring ^^
je ne l'ai pas testé ce script
mais utile à savoir ^^
j'utillise seulement 6lignes basique pour l'envoi de mail via powershell.
dommage qu'il n'est pas la possibilité d'un imputbox à la vbs nous indiquant les paramétres à rentré par exemple.
j'ai un script vbs qui m'envoit chaque jour le rapport de sauvegarde de ntbackup et létat de mes disques ^^ ton script fonctionnerai pas dans mon cas.mais de toute seul exchange 2007 est équipe de powershell lol
bravo encore sinon ^^
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.079 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- [Concours Scripting]Mail_Send (validé)