Question
[Résolu] Envoi de mail et libération d'un fichier
- Zedd
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 45
- Remerciements reçus 0
il y a 10 ans 11 mois #19356
par Zedd
[Résolu] Envoi de mail et libération d'un fichier a été créé par Zedd
Bonjour,
J'essaye d'envoyer un fichier en pièce jointe d'un email, puis une fois fait, de bouger ce fichier dans un dossier \"SENT\".
Au moment de l'exécution, j'ai droit à un beau message qui me dit que mon fichier est locké.
\"Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus.\"
Jusque la, ca ne me choque pas, je comprend le principe.
Comment rendre mon fichier dispo pour déplacement ?
J'ai bien trouvé la fonction Dispose() mais j'ai un peu du mal à l'utiliser.
Voici comment j'envoi mes fichiers :
[code:1]
$Chemin = \"D:\CVEMEG\\"
$CheminSource = \"\\172.16.0.1\qdls\CVEMEG\\"
$CheminFait = \"\\172.16.0.1\qdls\CVEMEG\SENT\\"
$Journal = $Chemin + \"Journal.txt\"
#####Informations relative à l'envoi de mail
$ServeurSMTP = \"smtp.xxxxxx\"
$SMTPAuthUsername = \"no-reply@xxxxxx\"
$expediteur = \"no-reply@xxxxxx\"
$Port = 25
$SMTPAuthPassword = \"xxxxxx\"
$SMTPClient = New-Object System.Net.Mail.smtpClient($ServeurSMTP,$Port)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername, $SMTPAuthPassword)
cls
D:
cd $Chemin
#Je liste les fichiers présents
$Fichiers = Get-ChildItem $CheminSource | Where-Object {!$_.PSIsContainer}
#Destinataires des emails
$Destinataire = \"xxxxxxxx@xxxxxxxx\"
Foreach ($File in $Fichiers){
$CheminFichierSource = $File.fullname
$NomFichierSource = $File.name
$PieceJointe = $CheminFait + $NomFichierSource
$objet = \"Envoi du fichier $NomFichierSource du \" + [System.DateTime]::Now
$CorpsDuMail = \"Bonjour, `n
Vous trouverez en pièce jointe votre fichier $NomFichierSource.`n `n
Cordialement, `n
L'équipe informatique.\"
$Attachment = New-Object System.Net.Mail.Attachment –ArgumentList $CheminFichierSource
$MailMessage = New-Object System.Net.Mail.MailMessage
$Recipient = New-Object System.Net.Mail.MailAddress($Destinataire, \"$Destinataire\"«»)
$Sender = New-Object System.Net.Mail.MailAddress($expediteur, \"$expediteur\"«»)
$MailMessage.Sender = $Sender
$MailMessage.From = $Sender
$MailMessage.Subject = $Objet
$MailMessage.To.add($Recipient)
$MailMessage.Body = \"$CorpsDuMail\"
if ($Attachment -ne $null) {
$MailMessage.attachments.add($Attachment)
}
$SMTPClient.Send($MailMessage)
move $CheminFichierSource $CheminFait
}
[/code:1]
Cdt,
zedd<br><br>Message édité par: Arnaud, à: 9/04/15 10:45
J'essaye d'envoyer un fichier en pièce jointe d'un email, puis une fois fait, de bouger ce fichier dans un dossier \"SENT\".
Au moment de l'exécution, j'ai droit à un beau message qui me dit que mon fichier est locké.
\"Le processus ne peut pas accéder au fichier, car il est utilisé par un autre processus.\"
Jusque la, ca ne me choque pas, je comprend le principe.
Comment rendre mon fichier dispo pour déplacement ?
J'ai bien trouvé la fonction Dispose() mais j'ai un peu du mal à l'utiliser.
Voici comment j'envoi mes fichiers :
[code:1]
$Chemin = \"D:\CVEMEG\\"
$CheminSource = \"\\172.16.0.1\qdls\CVEMEG\\"
$CheminFait = \"\\172.16.0.1\qdls\CVEMEG\SENT\\"
$Journal = $Chemin + \"Journal.txt\"
#####Informations relative à l'envoi de mail
$ServeurSMTP = \"smtp.xxxxxx\"
$SMTPAuthUsername = \"no-reply@xxxxxx\"
$expediteur = \"no-reply@xxxxxx\"
$Port = 25
$SMTPAuthPassword = \"xxxxxx\"
$SMTPClient = New-Object System.Net.Mail.smtpClient($ServeurSMTP,$Port)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername, $SMTPAuthPassword)
cls
D:
cd $Chemin
#Je liste les fichiers présents
$Fichiers = Get-ChildItem $CheminSource | Where-Object {!$_.PSIsContainer}
#Destinataires des emails
$Destinataire = \"xxxxxxxx@xxxxxxxx\"
Foreach ($File in $Fichiers){
$CheminFichierSource = $File.fullname
$NomFichierSource = $File.name
$PieceJointe = $CheminFait + $NomFichierSource
$objet = \"Envoi du fichier $NomFichierSource du \" + [System.DateTime]::Now
$CorpsDuMail = \"Bonjour, `n
Vous trouverez en pièce jointe votre fichier $NomFichierSource.`n `n
Cordialement, `n
L'équipe informatique.\"
$Attachment = New-Object System.Net.Mail.Attachment –ArgumentList $CheminFichierSource
$MailMessage = New-Object System.Net.Mail.MailMessage
$Recipient = New-Object System.Net.Mail.MailAddress($Destinataire, \"$Destinataire\"«»)
$Sender = New-Object System.Net.Mail.MailAddress($expediteur, \"$expediteur\"«»)
$MailMessage.Sender = $Sender
$MailMessage.From = $Sender
$MailMessage.Subject = $Objet
$MailMessage.To.add($Recipient)
$MailMessage.Body = \"$CorpsDuMail\"
if ($Attachment -ne $null) {
$MailMessage.attachments.add($Attachment)
}
$SMTPClient.Send($MailMessage)
move $CheminFichierSource $CheminFait
}
[/code:1]
Cdt,
zedd<br><br>Message édité par: Arnaud, à: 9/04/15 10:45
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 10 ans 11 mois #19369
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Libération d'un fichier utilisé dans variable
Salut !
Je ne sais pas pourquoi le fichier est toujours verrouillé après ton envoi par mail. Cependant, pourquoi n'essaierais tu pas la commande Send-MailMessage ?
D'un ton script serait plus court et moins lisible, et de deux peut-être que ça fonctionnera mieux ?
Arnaud
Je ne sais pas pourquoi le fichier est toujours verrouillé après ton envoi par mail. Cependant, pourquoi n'essaierais tu pas la commande Send-MailMessage ?
D'un ton script serait plus court et moins lisible, et de deux peut-être que ça fonctionnera mieux ?
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.
- Zedd
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 45
- Remerciements reçus 0
il y a 10 ans 11 mois #19372
par Zedd
Réponse de Zedd sur le sujet Re:Libération d'un fichier utilisé dans variable
Salut,
Ben tout simplement parce que je ne connais pas la fonction Send-MailMessage
Je vais me renseigner la dessus, voir si ça colle à mes besoins.
Tant que je peux envoyer du mail avec X destinataires (directs OU en copie OU en copie cachée), que je peux envoyer X pièces jointes dans le même email, et qu'il y a la double notion d'expéditeur (From ET Sender), ça roule
Sans parler de mon certificat maison du SMTP de la société..
Mais à première vue, ça peut faire tout ça.
Cdt,
Zedd
Ben tout simplement parce que je ne connais pas la fonction Send-MailMessage
Je vais me renseigner la dessus, voir si ça colle à mes besoins.
Tant que je peux envoyer du mail avec X destinataires (directs OU en copie OU en copie cachée), que je peux envoyer X pièces jointes dans le même email, et qu'il y a la double notion d'expéditeur (From ET Sender), ça roule
Mais à première vue, ça peut faire tout ça.
Cdt,
Zedd
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 10 ans 11 mois #19374
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Libération d'un fichier utilisé dans variable
Oui oui cette commande peut tout faire
!
Tiens nous au courant si ça règle ton souci.
Arnaud
PS : Zed is dead baby, Zed is dead...
(citation de l'un de mes films préféré)
Tiens nous au courant si ça règle ton souci.
Arnaud
PS : Zed is dead baby, Zed is dead...
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 10 ans 11 mois #19387
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Libération d'un fichier utilisé dans variable
Salut,
Zedd écrit:
Zedd écrit:
Un exemple dans ce tutoriel .J'ai bien trouvé la fonction Dispose() mais j'ai un peu du mal à l'utiliser.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 10 ans 11 mois #19440
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:Libération d'un fichier utilisé dans variable
C'est fou ces gens qui viennent poser leurs questions mais qui ne prennent même pas la peine de revenir pour nous dire si ça a marché ou pas...
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.
Temps de génération de la page : 0.109 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Envoi de mail et libération d'un fichier