none
Отправка почты с вложением из нескольких файлов через PowerShell RRS feed

  • Вопрос

  • Здравствуйте!

    Я начинаю изучать powershell и поэтому возможно мой вопрос будет простым. Но поискав информацию в интернете не нашел для себя ответа.

    Задача. Есть расшаренная папка с небольшим уровнем вложение. В эти папки автоматически генерятся файлы (отчеты о прохождение тестирования). Нужно найти файлы с необходимым расширением, дата - не позже текущего дня. Создать письмо, приаттачить все найденные файлы к письму и отправить на нужные адреса.

    Проблема у меня заключается в том что я не могу приаттачить найденые файлы к письму. Ни каких ошибок нет, письмо приходит но файлы не аттачутся.

    Код скрипта привожу ниже:

    # Ищем файлы последние за сутки
    $CurrentDate = Get-Date -UFormat "%Y-%m-%d"
    # $CurrentDate
    $ListFile = Get-ChildItem \\iprs042\RanorexProject\CalcParams\CalcParams\bin\Debug* -include *.rxlog -recurse | Where-Object{ $_.LastWriteTime -gt $CurrentDate }
    #$ListFile
    
    # Создаем почтовое сообщение
    $mail = New-Object System.Net.Mail.MailMessage
    
    # Устанавливаем соединение
    $mail.From = New-Object System.Net.Mail.MailAddress("denis.nuzhdin@info-pro.ru")
    $mail.To.Add("denis.nuzhdin@info-pro.ru" )
    
    # Устанавливаем тему сообщения
    $mail.Subject = "report";
    # Создаем тело сообщения из файла
    $mail.Body = "тестовая отправка сообщения"
    
    # Приаттачиваем файлы
    foreach ($File in ($ListFile))
        {
            $Attachment = New-Object System.Net.Mail.Attachment ($File)
            $SMTPMessage.Attachments.Add($Attachment)
        }
    
    
    # Создаем почтовое сообщение
    $smtp = New-Object System.Net.Mail.SmtpClient
    # Указываем хост через который будем отправлять
    $smtp.host = "cas.info-pro.ru"
    
    
    
    # Задаем пользователя от имени которого будет происходить отправка
    $Credentials = new-object System.Net.networkCredential
    $Credentials.domain = "infopro"
    $Credentials.UserName = "denis.nuzhdin"
    $Credentials.Password = "***"
    $smtp.Credentials = $Credentials
    
    # Отправка
    $smtp.Send($mail)



    • Изменено dn_kashmir 28 марта 2012 г. 6:01
    28 марта 2012 г. 5:59

Ответы

  • у вас ошибка $SMTPMessage.Attachments.Add($Attachment) нужно $mail.Attachments.Add($Attachment)

    • Помечено в качестве ответа KazunEditor 28 марта 2012 г. 10:04
    28 марта 2012 г. 9:08
  • Файлы нужно аттачить к письму, в данном случае - переменная $mail, т.е. не 
    $SMTPMessage.Attachments.Add($Attachment)
    а
    $mail.Attachments.Add($Attachment)

    А вообще дли этих целей есть командлет Send-MailMessage
    • Помечено в качестве ответа KazunEditor 28 марта 2012 г. 9:56
    28 марта 2012 г. 9:11

Все ответы