gpt4 book ai didi

.net - 通过 .NET 发送电子邮件后 PowerShell 关闭文件/删除文件

转载 作者:行者123 更新时间:2023-12-04 17:04:59 25 4
gpt4 key购买 nike

我被困在我正在处理的脚本的末尾,文件在被删除之前通过电子邮件发送出去。除了.. 该文件似乎仍处于打开状态,可能是由 SMTP 客户端打开的,因此当我尝试删除它时出现错误。当然,重新启动 shell 会让我删除它,这不是重点。 ;-) 重点是我想在一个脚本中创建、发送电子邮件、删除它。

错误:

   Cannot remove item C:\Temp\myfile.csv: The process cannot access the file
'C:\Temp\myfile.csv' because it is being used by another process.

代码:
$emailFrom = 'noreply@localhost'
$emailTo = 'aaron@localhost'
$smtpServer = 'localhost'

$FileName='myfile.csv'
$FilePathName='c:temp\' + $FileName

$subject = 'Emailing: ' + $FileName
$body = 'This message as been sent with the following file or link attachments: ' + $FileName

$msg = new-object Net.Mail.MailMessage
$att = new-object Net.Mail.Attachment($FilePathName)
$smtp = new-object Net.Mail.SmtpClient($smtpServer)

$msg.From = $emailFrom
$msg.To.Add($emailTo)
$msg.Subject = $subject
$msg.Body = $body
$msg.Attachments.Add($att)
$smtp.Send($msg)

#Garbage Collection (used for releasing file for deleting)
# Start-Sleep -s 1
# [GC]::Collect()

#Clean-up/Remove File
# Start-Sleep -s 1
if (Test-Path $FilePathName) {Remove-Item $FilePathName}

注释掉的行是我尝试注入(inject)暂停和垃圾清理,产生了相同的结果。

最佳答案

处理附件和电子邮件对象

$att.Dispose();
$msg.Dispose();

进行 GC 无济于事,因为您仍然有根 refs

关于.net - 通过 .NET 发送电子邮件后 PowerShell 关闭文件/删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4319615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com