none
Скрипт Exchange RRS feed

  • Общие обсуждения

  • Добрый день, Есть следующий скрипт:

    Скрипт включает ящик и отправляет приветственное письмо на него.

    Enable-Mailbox $args[0] -Database $args[1]

    Set-Mailbox $args[0] -AuditEnabled $true

    Set-Mailbox $args[0] -AuditOwner Move, MoveToDeletedItems, SoftDelete, HardDelete

    #start-sleep 60

    $msg = new-object Net.Mail.MailMessage

    $msg.From = "recipient mail adress>"

    $msg.To.Add("<" + $args[0] + "domen>")

    $msg.subject = "Добро пожаловать...."

    $msg.IsBodyHtml = $True

    $msg.body = @"massege"@

    $files = Get-ChildItem "location Message"

    Foreach($file in $files)

    {

           $attachment = New-Object System.Net.Mail.Attachment –ArgumentList $file.FullName

        $attachment.ContentId = $file.FullName

           $msg.Attachments.Add($attachment)

    }

    $attachment.ContentDisposition.Inline = $True

    $attachment.ContentDisposition.DispositionType = "Inline"

    $attachment.ContentType.MediaType = "image/png"

    $attachment.ContentId = 'filelist.xml'

    $smtp = new-object Net.Mail.SmtpClient("relay_IP, "port")

    $smtp.Send($msg)

    $attachment.Dispose();

    $msg.Dispose();

    Проблема в том, что вторая часть скрипта не выполняется после включения почтового ящика.

    Пробовал использовать start-sleep для задержки выполнения,  проблему это не решает.

    Повторный запуск скрипта без проблем отправляет письмо.

    Как сделать выполнение второй части скрипта в одном теле  ? 



    6 июня 2017 г. 10:14

Все ответы

  • вообще лучше подобную логику реализовывать через scripting agent:

    https://blogs.msdn.microsoft.com/emeamsgdev/2014/07/23/exchange-automating-a-welcome-email-to-new-users/

    но если очень хочется скриптом, можно проверять создание, как в Office365 делается:

    do {
           $CheckIfUserAccountExists = Get-mailbox -UserPrincipalName $email -ErrorAction SilentlyContinue
           Write-Host "Checking if account has been created yet"
           Sleep 15
    }
    While ($CheckIfUserAccountExists -eq $Null)


    scientia potentia est
    My blog

    6 июня 2017 г. 11:33
  • К сожалению результат тот же,(точнее идет по циклу по вашей конструкции, но если начинаю проверять существующий поля то результат аналогичен предыдущей работе скрипта) В exchange есть возможность вернуть  «delivered» при отправки через relay ?  

    6 июня 2017 г. 14:12
  • К сожалению результат тот же,(точнее идет по циклу по вашей конструкции, но если начинаю проверять существующий поля то результат аналогичен предыдущей работе скрипта) В exchange есть возможность вернуть  «delivered» при отправки через relay ?  

    вообще начиная с powershell 2.0 лучше использовать Send-MailMessage

    https://philerb.com/2011/11/sending-mail-with-powershell/

    немного непонятно, что именно не работает: что-то выскакивает с ошибкой или просто не отправляется письмо? на логах коннектора сервера к которому вы цепляетесь есть информация о подключении?Контролеры домена распределены между сайтами? репликация работает? 

    и все же, почему не хотите использовать scripting agent?


    scientia potentia est
    My blog

    6 июня 2017 г. 14:23
  • Send-MailMessage требует аутентификации дли отправки письма, я отправляю письма на relay адрес, хотя можно попробовать переделать текущий скрипт. 

    Ошибок никаких нет. Скрипт отчитывается о создании потового ящика и завершает работу. При повторном запуске скрипта выводиться ошибка так как пользователь уже существует и письмо уходит! 

    С DC и репликой нет никаких проблем. тесты я провожу в рамках одного сайта.

    Про scripting agent никогда раньше не слышал, сейчас читаю по нему информацию, за что отдельное спасибо. 


    6 июня 2017 г. 15:00
  • >Проблема в том, что вторая часть скрипта не выполняется после включения почтового ящика

    Что значит не выполняется? Скорее всего выполняется, но - какая-то ошибка происходит или вообще нет ошибки?


    Сазонов Илья

    https://isazonov.wordpress.com/

    8 июня 2017 г. 11:09
    Модератор