Не удается найти перегрузку для "Добавить" и количество аргументов: "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

Другие вопросы по тегам