|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Отправка почты через PowerShell |
|
PowerShell - [решено] Отправка почты через PowerShell
|
Новый участник Сообщения: 45 |
Профиль | Отправить PM | Цитировать Добрый день!
Подскажите, есть вот такой скрипт: $Server = "" # SMTP Сервер $From = "" # Адрес отправителя $To = "" # Получатель $Subject = "Test" # Тема сообщения $Body = "Test" # Тело сообщения $ListFile = Get-ChildItem "C:\Attachments" # Вложения $SmtpClient = New-Object System.Net.Mail.SmtpClient $Message = New-Object System.Net.Mail.MailMessage $SmtpClient.Host = $Server $Message.From = $From $Message.To.Add($To) $Message.Subject = $Subject $Message.Body = $Body foreach ($File in $ListFile){ $Attachment = New-Object System.Net.Mail.Attachments($File.Fullname) $Message.Attachments.Add($Attachment) } $SmtpClient.Send($Message) Write-Host "Complete!" $Message.Dispose() Возникают ситуации когда скрипт необходимо перенести, а поэтому указание абсолютного пути не всегда удобно. Т.е. что нужно запись в переменнтую $ListFile чтобы список вложений формировался из файлов, которые находятся в папке Attachments, которая в свою очередь лежит рядом со скриптом? |
|
Отправлено: 11:24, 16-11-2011 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Проще использовать cmdlet - Send-MailMessage.Для определения папки из которой запускается скрипт,используйте переменную $MyInvocation:
$PathAtt = Join-Path (Split-Path $MyInvocation.MyCommand.Path) Attachments |
Последний раз редактировалось Kazun, 16-11-2011 в 13:08. Отправлено: 11:53, 16-11-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:30, 16-11-2011 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Для Send-MailMessage есть параметр -UseSsl,для .Net указать свойство - $SmtpClient.EnableSsl = $true.
Можно и явно задать. $SmtpClient.Credentials= New-Object System.Net.NetworkCredential("UserName" , "Password") Или если для командлета: $pass = ConvertTo-SecureString "password" -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential("UserName" , $pass) |
Отправлено: 13:44, 16-11-2011 | #4 |
Пользователь Сообщения: 145
|
Профиль | Отправить PM | Цитировать Здравствуйте. Можно ли отправлять не один, а сразу 2 или 3 файла в одном письме используя скрипт PowerShell (.ps1)? На одном сайте нашёл очень удобный скрипт, но он отправляет только по одному файлу.
Скрытый текст
#Адрес сервера SMTP для отправки
$serverSmtp = "smtp.yandex.ru" #Порт сервера $port = 587 #От кого $From = "login@yandex.ru" #Кому $To = "myMail@mail.ru" #Тема письма $subject = "Письмо с вложением" #Логин и пароль от ящики с которого отправляете login@yandex.ru $user = "login" $pass = "12345678" #Путь до файла $file = "C:\arhive.zip" #Создаем два экземпляра класса $att = New-object Net.Mail.Attachment($file) $mes = New-Object System.Net.Mail.MailMessage #Формируем данные для отправки $mes.From = $from $mes.To.Add($to) $mes.Subject = $subject $mes.IsBodyHTML = $true $mes.Body = "<h1>Тестовое письмо</h1>" #Добавляем файл $mes.Attachments.Add($att) #Создаем экземпляр класса подключения к SMTP серверу $smtp = New-Object Net.Mail.SmtpClient($serverSmtp, $port) #Сервер использует SSL $smtp.EnableSSL = $true #Создаем экземпляр класса для авторизации на сервере яндекса $smtp.Credentials = New-Object System.Net.NetworkCredential($user, $pass); #Отправляем письмо, освобождаем память $smtp.Send($mes) $att.Dispose() Пробовал добавлять ещё одну строку $file = "C:\arhive.zip", пробовал писать $file2 = "C:\arhive.zip", но оба эти варианта не сработали. |
|
------- Отправлено: 19:01, 16-08-2019 | #5 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать beowulf0208, чем не устраивает командлет Send-MailMessage?
|
Отправлено: 11:07, 17-08-2019 | #6 |
Пользователь Сообщения: 145
|
Профиль | Отправить PM | Цитировать Цитата Busla:
Подсказали на ответах mail. Нужно добавить 3 строки в скрипт и тогда можно будет отправлять 2 файла. Вот эти строки: $att2 = New-object Net.Mail.Attachment($file2) $mes.Attachments.Add($att2) $file2 = "C:\arhive2.zip" |
|
------- Отправлено: 12:05, 17-08-2019 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - Отправка почты через командную строку | Freezet | Microsoft Windows 2000/XP | 10 | 18-09-2008 11:31 | |
отправка почты | msaus | Вебмастеру | 3 | 18-08-2006 18:16 | |
Отправка почты через дос команды | BigDim | Microsoft Windows NT/2000/2003 | 2 | 07-07-2006 10:40 | |
Отправка почты (The Bat) | Goliase | Хочу все знать | 6 | 27-03-2004 11:45 | |
Отправка почты из под XP | alexmaker | Microsoft Windows 2000/XP | 6 | 26-07-2002 23:38 |
|