Не удается найти перегрузку для "Добавить" и количество аргументов: "1"
Я получил два разных сценария и соединил их, чтобы проверить конкретную папку на наличие нового файла, и отправил по электронной почте этот файл как вложение.
Вот код в сочетании:
Param (
$Path = "C:\path"
)
$File = Get-ChildItem $Path | Where { $_.LastWriteTime -ge [datetime]::Now.AddMinutes(-10) }
If ($File)
{
$emailSmtpServer = "smtp.xxxx.com"
$emailSmtpServerPort = "587"
$emailSmtpUser = "xxxx@xxxxxx.com"
$emailSmtpPass = "xxxxxxxx"
$emailMessage = New-Object System.Net.Mail.MailMessage
$emailMessage.From = "Xxxx Xxxx <xxxx@xxxxxx.com>"
$emailMessage.To.Add( "xxxx@xxxxxx.com" )
$emailMessage.Subject = "File Test Report"
$emailMessage.IsBodyHtml = $false
$emailMessage.Body = "Weekly Report"
$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
$attachment = $File
$emailMessage.Attachments.Add($attachment)
$SMTPClient.Send($emailMessage)
}
Код работает нормально, он ищет новый файл и отправляет письмо, за исключением того, что он не прикрепит файл, и я получаю следующую ошибку
Cannot find an overload for "Add" and the argument count: "1".
At D:\SendEmail2.ps1:24 char:1
+ $emailMessage.Attachments.Add($attachment)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
Я думаю, что это как-то связано с вызовом файла с $attachment = $File
Кто-нибудь может помочь?
1 ответ
Вы, вероятно, должны создать Attachment
сначала объект, а также иметь дело с несколькими файлами, поэтому замените следующие строки:
$attachment = $File
$emailMessage.Attachments.Add($attachment)
с:
$File | ForEach-Object {
$filePath = $_.FullName
$attachment = new-object Net.Mail.Attachment($filePath)
$emailMessage.Attachments.Add($attachment)
}
У меня была та же проблема, что и у вас, и это исправило ее. https://community.spiceworks.com/posts/8438625
просто измените: $path = "D:\FTP-COR\$($today.Year)\$($today.ToString("MM-dd-yyyy"))" и добавьте свои учетные данные.
Я использую PowerShell: (я использую.NET, поэтому не забывайте C#, пожалуйста, не спрашивайте):-) создайте файл.csv:
$collection | Export-Csv -Path $SaveAs -NoTypeInformation
Чтобы создать объект вложения:
[System.Net.Mail.Attachment] $Attachment = [System.Net.Mail.Attachment]::new($SaveAs)
Затем прикрепить к объекту сообщения:
$message.Attachments.Add($Attachment)
Это должно работать. Я использовал это, и он отлично работает. Я знаю, что это в PowerShell, но по сути тот же.NET