Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Send-MailMessage (http://forum.oszone.net/showthread.php?t=352400)

nwss 16-11-2022 19:47 2996637

Send-MailMessage
 
Доброго времени суток всем.
Помогите разобраться с автоматизацией отсылки почты.

Мое поделие
Код:

$cred = Import-CliXML -Path 'cred.xml'

Send-MailMessage `
-From 'pochta@yandex.ru' `
-To 'pochta@yandex.ru' `
-SmtpServer 'smtp.yandex.ru' `
-Body 'Davai работай' `
-Port '587' `
-UseSsl `
-Subject 'test' `
-dno onFailure `
-Credential $cred







Теперь вопросы:
1. как избежать окна с вводом кредов и указать их в коде? или любым другим способом. я планирую отправить +-200 писем и готов ввести креды 1 раз (в идеале 0 раз). Вроде решил.

CP-866 и CP-1251 почту отправляют нормально, но кириллицу заменяют на ??????
решилось сохранением файла в кодировке CP-1251 и параметром -Encoding utf8
3. Если есть под рукой хорошие примеры или готовые решения - с радостью изучу, потому что мне еще предстоит само тело письма отформатировать для html и я думаю там я горя хлебну.

Заранее спасибо.

DJ Mogarych 16-11-2022 20:01 2996641

Добавьте параметр
Код:

-Encoding utf8

nwss 16-11-2022 20:21 2996643

photo sharing

если документ сохраняю в utf-8 то выдает ошибку


dmitryst 17-11-2022 10:13 2996674

DJ Mogarych, может, таки base64? ;)

nwss 17-11-2022 20:35 2996744

Решилось сохранением файла скрипта в CP-1251 и советом от могарыча.
Всем спасибо, почта улетела.

Конечный вариант
Сохраняем креды в xml
Код:

$cred = Get-Credential
$cred | Export-CliXML -Path 'cred-pochta-yandex.xml'

Используя сохраненные креды отправляем почту по адресам перечисленным в файле
Код:

$file = Get-Content -Path 'mail-orel-adm.txt'
$from = 'pochta@yandex.ru'
$cred = Import-CliXML -Path 'cred-pochta-yandex.xml'
$smtp = 'smtp.yandex.ru'
$port = 587
$subj = 'сабж'
$body = '
боди
'
$encoding = [System.Text.Encoding]::UTF8
for ($i = 0; $i -lt $file.Count; $i++) {
    [Console]::Write($i);[Console]::Write(". ");Write-Output $file.Item($i)
    Send-MailMessage `
        -From $from `
        -To $file.Item($i) `
        -SmtpServer $smtp `
        -Body $body `
        -BodyAsHtml `
        -Port $port `
        -Subject $subj `
        -UseSsl `
        -dno 'onFailure', 'Delay' `
        -Credential $cred `
        -Encoding $encoding
}



Время: 17:53.

Время: 17:53.
© OSzone.net 2001-