Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Отправка почты через PowerShell

Ответить
Настройки темы
PowerShell - [решено] Отправка почты через PowerShell

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить 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()
Возможно ли сделать так, чтобы файлы для вложения брались из каталога Attachments, который расположен рядом с исполняемым скриптом PowerShell?
Возникают ситуации когда скрипт необходимо перенести, а поэтому указание абсолютного пути не всегда удобно. Т.е. что нужно запись в переменнтую $ListFile чтобы список вложений формировался из файлов, которые находятся в папке Attachments, которая в свою очередь лежит рядом со скриптом?

Отправлено: 11:24, 16-11-2011

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо!
А подскажите, возможно ли отправлять письмо средствами скрипта с авторизаций и поддержкой SSL так чтобы логин и пароль можно было явным образом указывать в скрипте, а не вводить используя вызов:
Код: Выделить весь код
$cred = Get-Credential
?

Отправлено: 13:30, 16-11-2011 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить 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


Аватара для beowulf0208

Пользователь


Сообщения: 143
Благодарности: 6

Профиль | Отправить 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", но оба эти варианта не сработали.

-------
Лучший антивирус для домашнего ПК - avast.com/get/2fldBDYI


Отправлено: 19:01, 16-08-2019 | #5


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


beowulf0208, чем не устраивает командлет Send-MailMessage?

Отправлено: 11:07, 17-08-2019 | #6


Аватара для beowulf0208

Пользователь


Сообщения: 143
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата Busla:
чем не устраивает командлет Send-MailMessage? »
Нужен именно скрипт в виде отдельного файла, который можно будет скачать по ftp и запустить на удалённом ПК.

Подсказали на ответах mail. Нужно добавить 3 строки в скрипт и тогда можно будет отправлять 2 файла. Вот эти строки:

$att2 = New-object Net.Mail.Attachment($file2)
$mes.Attachments.Add($att2)
$file2 = "C:\arhive2.zip"

-------
Лучший антивирус для домашнего ПК - avast.com/get/2fldBDYI


Отправлено: 12:05, 17-08-2019 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Отправка почты через PowerShell

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Отправка почты через командную строку 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




 
Переход