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

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

Ответить
Настройки темы
PowerShell - Отправка сообщения с помощью PowerShell

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


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

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


Изменения
Автор: rar_xxx
Дата: 12-09-2013
Всем привет, у меня Microsoft Exchange Server 2010 ver. - 14.02.0318.004

Пытаюсь с помощью PowerShell отправить письмо с вложением.

Так все отлично, письмо приходит:
Код: Выделить весь код
Send-MailMessage -From "..." -To "..." -Subject "Test #01" -Body "Just a test message."  -SMTPServer "..."
Добавляем вложение, все проходит без ошибок, но и письма нет:
Код: Выделить весь код
Send-MailMessage -From "..." -To "..." -Subject "Test #01" -Body "Just a test message." -Attachments "E:\ABC.txt"   -SMTPServer "..."
Пробуем так, тоже все проходит без ошибок , но и письма нет, убираем блок с присоединением пустое письмо приходит:
Код: Выделить весь код
$Server   = "..." # SMTP Сервер
$From      = "..." # Адрес отправителя
$To          = "..." # Получатель
$Subject  = "Необходима отправка меня" # Тема сообщения
$Body     = "Когда ты меня отправишь ?" # Тело сообщения
$ListFile  = Get-ChildItem "E:\att" # Вложения

$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.Attachment $File.Fullname
    $Message.Attachments.Add($Attachment)
}
$SmtpClient.Send($Message)
Write-Host "Complete!"
$Message.Dispose()
Смотрел в инструментах "Проводник журнала отслеживания", пустые письма, которые доходят, в журнале видно. Те письма которые с вложениями и не доходят, в журнале нет.
Что это за прикол? куда копать ?
Я сервак не админю, но мне необходимо сделать авторассылку, стоит такая антиспам штука GFI MailEssentials, может это она может блокировать письма с вложениями, а без пропускать, от одной и той же внутренней почты? Или это в Exchange Server'е есть подобная защита ?

Отправлено: 15:10, 12-09-2013

 

Ветеран


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

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


Попробуйте установить обновление - http://support.microsoft.com/kb/2402064
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:55, 19-11-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


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


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

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


спасибо большое! обновление помогло.

Отправлено: 10:23, 19-11-2013 | #12


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


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

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


Здравствуйте!
Есть ли возможность получить результат отправки письма?
Например письмо успешно отправлено или его не удалось отправить.

Отправлено: 13:33, 01-04-2014 | #13


Ветеран


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

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


Цитата almaz.husnullin:
Есть ли возможность получить результат отправки письма?
Например письмо успешно отправлено или его не удалось отправить. »
Изучайте: SmtpClient.Send Method (String, String, String, String) (System.Net.Mail).

Отправлено: 13:57, 01-04-2014 | #14


Ветеран


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

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


Нет, можно лишь только предполагать, что если метод Send ничего не вернул - то успех, в другом случаи возникнет исключение.

Отправлено: 14:08, 01-04-2014 | #15


Ветеран


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

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


Kazun, не совсем так. Нельзя получить результат доставлено ли сообщение, а вот что отправлено — вполне можно. И как раз по обработке возникающих исключений, буде таковые.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:56, 01-04-2014 | #16


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


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

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


Ловить исключение trap`ом?
Такой код почему-то всегда возвращает 0.
Код: Выделить весь код
param (
	[string[]]$To="ящик2@pupkin.ru", # Получатели
	[string[]]$CC = "", # Получатели копии
	[string[]]$BCC = "", # Получатели скрытой копии
	$Body = "", # Тело сообщения
	$Subject = "", # Тема сообщения
	[System.IO.FileInfo[]]$Attachment=@() # Вложения
)
trap [System.Net.Mail.SmtpFailedRecipientsException] {
	$res=-1
	continue
}
$res=0
Write-Verbose "Создаем объекты SmtpClient и MailMessage"
$From = "ящик1@yandex.ru" # Адрес отправителя
$Server = "smtp.yandex.ru" # SMTP Сервер
$SmtpClient = New-Object System.Net.Mail.SmtpClient
$Message = New-Object System.Net.Mail.MailMessage
Write-Verbose "Устанавливаем свойства этих объектов"
$SmtpClient.Credentials = New-Object Net.NetworkCredential($From, 'пароль')
$SmtpClient.Host = $Server
$Message.Body = $Body
$Message.IsBodyHtml = $True
$Message.Subject = $Subject
$Message.From = $From
Write-Verbose "Создаем и добавляем вложения"
$Attachment | ForEach-Object {
	$a = New-Object System.Net.Mail.Attachment($_.fullname)
	$Message.Attachments.Add($a)
}
Write-Verbose "Добавляем получателей"
$To | ForEach-Object {$Message.To.Add($_)}
If ($CC -ne "") {$CC | ForEach-Object {$Message.CC.Add($_)}}
If ($BCC -ne "") {$BCC | ForEach-Object {$Message.BCC.Add($_)}}
Write-Verbose "Отправляем сообщение"
$smtpclient.Send($Message)
$res

Отправлено: 16:19, 01-04-2014 | #17


Ветеран


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

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


$res=-1 исправить на $script:res

Но лучше использовать try{$smtpclient.Send($Message)} catch {-1}
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:26, 01-04-2014 | #18


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


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

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


Kazun, нужна Ваша помощь!
Требуется перенастроить скрипт на отправку с помощью SSL и через порт 465.
При добавлении
Код: Выделить весь код
$SmtpClient.Port = 465
$SmtpClient.EnableSSL = $true
появляется ошибка:
Код: Выделить весь код
Исключение при вызове "Send" с "1" аргументами: "Время ожидания операции истекло."
C:\Powershell\Sendemail.ps1:34 знак:1
+ $smtpclient.Send($Message)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SmtpException

Отправлено: 12:15, 12-09-2014 | #19


Ветеран


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

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


Для yandex измените порт с 465 на 587.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:29, 12-09-2014 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Отправка почты через PowerShell Pavelnt Скриптовые языки администрирования Windows 6 17-08-2019 12:05
2010 - Отправка сообщение автоматичиски nureke Microsoft Office (Word, Excel, Outlook и т.д.) 3 25-04-2013 14:24
PowerShell - [решено] Сбор и анализ сведений о системе с помощью PowerShell Vadikan Скриптовые языки администрирования Windows 0 25-03-2013 09:30
PowerShell - [решено] Импорт из CSV в AD с помощью PowerShell rox33 Скриптовые языки администрирования Windows 23 20-07-2012 15:45
PowerShell - Импорт пользователей с помощью POwerShell и CSV файла. Temafet Скриптовые языки администрирования Windows 19 18-01-2012 16:45




 
Переход