Question [Résolu] Envoi de mail qui fonctionne mal

Plus d'informations
il y a 9 ans 9 mois #22202 par Guillaume
Bonjour à tous,

J'ai créé un script qui obtient les utilisateurs dont les comptes sont expirés depuis 6 mois, les désactive, envoi un mail à une personne du service RH pour validation de la suppression et enfin ladite suppression finale.

C'est la partie \"Envoi de mail\" qui me pose souci. Voici les extraits de code concernés :

[code:1]# LISTE
$Date_SU = (Get-Date).AddDays(-180)
$Liste2 = Get-ADUser -Filter {(accountExpirationDate -ne 'Never') -and (accountExpirationDate -le $Date_SU)} -Properties * | select sAMAccountName, accountExpirationDate, physicalDeliveryOfficeName | sort accountExpirationDate

# VARIABLES MAIL
$Expediteur = \"expediteur@societe.com\"
$Destinataire = \"destinataire@societe.com\"
$Sujet = \"Validation pour comptes utilisateurs à supprimer\"
$Style = \"<style>BODY{font-family: Calibri; font-size: 11pt;}</style>\"
$Corps1 = \"Bonjour, <p>Merci de bien vouloir confirmer si les utilisateurs ci-dessous peuvent être supprimés :\"
$Corps2 = $Liste2 | Select-Object -Property ` @{Label='Compte';Expression={$_.sAMAccountName}}, @{Label='Date expiration';Expression={$_.accountExpirationDate.ToShortDateString()}}, @{Label='Agence';Expression={$_.physicalDeliveryOfficeName}} | ConvertTo-Html -Head $Style ; Start-Sleep -s 1
$Signature = \"<p><b>Le Service Informatique</b>\"
$Mail_Complet = $Corps1 + $Corps2 + $Signature

$Mail = New-Object System.Net.Mail.MailMessage $Expediteur, $Destinataire
$Mail.Subject = $Sujet
$Mail.IsBodyHtml = $True
$Mail.Body = $Mail_Complet

$Serveur_Mail = \"Nom du serveur\"

# ENVOI MAIL
$Envoi = New-Object Net.Mail.SmtpClient($Serveur_Mail);Start-Sleep -s 0.5
$Envoi.Send($Mail)[/code:1]

Quand je lance le script, je reçois très bien le mail mais il manque la partie \"$Corps2\" avec le tableau.

Du coup, j'ai ouvert PowerShell ISE et j'ai lancé les lignes une par une pour trouver d'où venait le souci. Et tout va bien... Je reçois le mail complet.
Je relance le script... et tout va bien.

J'ai reproduit ceci plusieurs jours et l'histoire est toujours la même : si je ne lance pas les commandes manuellement, la partie \"$Corps2\" n'apparaîtra jamais dans le mail. :(

Je suis dispo pour tous les renseignements nécessaires. Merci par avance !<br><br>Message édité par: Arnaud, à: 31/08/16 15:43

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #22203 par Arnaud Petitjean
Bonjour Guillaume,

J'ai l'impression que tu te compliques la vie inutilement.
Pourquoi n'utilises-tu pas la commande \&quot;Send-MailMessage\&quot; ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #22207 par Guillaume
Bonjour,

Je vais essayer de modifier le script et je reviens vers vous pour confirmer si cela fonctionne.

Merci !

EDIT : Effectivement, c'est un peu plus simple et ça marche mieux (seulement un échec, le second était bon). Le problème se situe à la création de la variable \&quot;$Corps2\&quot;. Je ne comprends pas pourquoi il bloque...<br><br>Message édité par: Guillaume_F, à: 26/08/16 11:01

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 9 mois #22213 par xyz
Réponse de xyz sur le sujet Re:Envoi de mail qui fonctionne mal
Guillaume_F écrit:

Je ne comprends pas pourquoi il bloque...

Demande à Write-Debug :P

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 8 mois #22222 par Arnaud Petitjean
Salut !

Essaye peut-être d'enlever ton \&quot;Start-Sleep\&quot; au bout de ta ligne de commande. Il n'a rien à faire ici.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 8 mois #22227 par Guillaume
[code:1]
# LISTE

$Date_SU = (Get-Date).AddDays(-180)
$Liste2 = Get-ADUser -Filter {(accountExpirationDate -ne 'Never') -and (accountExpirationDate -le $Date_SU)} -Properties * | select sAMAccountName, accountExpirationDate, physicalDeliveryOfficeName | sort accountExpirationDate
$Champ_résultats_SU.Text = $Liste2 | Select-Object -Property ` @{Label='Compte';Expression={$_.sAMAccountName}}, @{Label='Date expiration';Expression={$_.accountExpirationDate.ToShortDateString()}}, @{Label='Agence';Expression={$_.physicalDeliveryOfficeName}} | Format-Table -Autosize | Out-String
$Export_SU = $Liste2 | Export-Csv -Path \&quot;\\Chemin\utilisateurs2.csv\&quot; -NoTypeInformation



# VARIABLES MAIL

$Expediteur = \&quot;expediteur@societe.com\&quot;
$Destinataire = \&quot;destinataire@societe.com\&quot;

$Sujet = \&quot;Validation pour comptes utilisateurs à supprimer\&quot;
$Style = \&quot;&lt;style&gt;BODY{font-family: Calibri; font-size: 11pt;}&lt;/style&gt;\&quot;
$Corps1 = \&quot;Bonjour, &lt;p&gt;Merci de bien vouloir confirmer si les utilisateurs ci-dessous peuvent être supprimés :\&quot;
$Corps2 = $Liste2 | Select-Object -Property ` @{Label='Compte';Expression={$_.sAMAccountName}}, @{Label='Date expiration';Expression={$_.accountExpirationDate.ToShortDateString()}}, @{Label='Agence';Expression={$_.physicalDeliveryOfficeName}} | ConvertTo-Html -Head $Style ; Start-Sleep -s 1
$Signature = \&quot;&lt;p&gt;&lt;b&gt;Le Service Informatique&lt;/b&gt;\&quot;

$Mail_Complet = $Corps1 + $Corps2 + $Signature


$Mail = New-Object System.Net.Mail.MailMessage $Expediteur, $Destinataire
$Mail.Subject = $Sujet
$Mail.IsBodyHtml = $True
$Mail.Body = $Mail_Complet

$Serveur_Mail = \&quot;Nom du serveur\&quot;


# ENVOI MAIL

Send-Mailmessage -Encoding UTF8 -To $Destinataire -From $Expediteur -Subject $Sujet -SmtpServer $Serveur_Mail -Body $Mail_Complet -BodyAsHtml

[/code:1]

Bonjour,

J'ai changé la méthode d'envoi par \&quot;Send-MailMessage\&quot; mais le résultat final est identique, je n'ai toujours pas le \&quot;$Corps2\&quot; qui apparaît dans le mail.

Concernant \&quot;Write-Debug\&quot;, je ne sais pas comment l'utiliser (où le placer, etc.).

J'ai rajouté dans l'extrait de code deux lignes :
- Mon script s'exécute via une interface graphique et j'affiche le résultat de \&quot;$Liste2\&quot; dans un champs.
- J'exporte les données de \&quot;$Liste2\&quot; dans un CSV.

Je ne sais pas si ça peut aider à résoudre ce problème.

Merci beaucoup de votre aide en tout cas :)

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.044 secondes
Propulsé par Kunena