none
Отправить письмо на внешний адрес. RRS feed

  • Вопрос

  • Ребята, привет! Есть вопрос. Не могу победить.
    В общем надо тупо отправвить письмо на Внешний адрес, используя Powershell.
    Соответсвенно так как адрес внешний - возникают проблемы.
    Пробовал завести внешний адрес как MailContact. Но Send-MailMessage не понимает этот адрес. Как быть? Спасибо!

    Send-MailMessage -From "user@domain.local" -To "user@gmail.com" -Subject "Subject" -Body "Message test"

    7 июня 2017 г. 11:14

Ответы

  • Send-MailMessage не отсылает письма напрямую удаленному smtp-серверу, а требует relay для своей работы.

    Send-MailMessage -> Exchange(или любой другой smtp-сервер) -> Проверка подлинности от кого отсылаем(или настройки коннектора приема )(user@domain.local) -> Exchange отсылает письмо на user@gmail.com

    Если требуется отправлять спам, то использовать модуль, который посылает письма напрямую к серверу получателя - Powershell module to send email without need for SMTP relay server

    Или встроенный SmtpClient:

    $host = (Resolve-DnsName -Name gmail.com -Type Mx | Sort Preference)[0].NameExchange
    $c = [System.Net.Mail.SmtpClient]::new($host)
    $s = [System.Net.Mail.MailAddress]::new("user@domain.local","Sender")
    $r = [System.Net.Mail.MailAddress]::new("user@gmail.com","Recipient")
    $m=[System.Net.Mail.MailMessage]::new($s,$r)
    $m.Subject = "Subject"
    $m.Body = "Message test"
    $c.Send($m)
    


    • Изменено KazunEditor 7 июня 2017 г. 14:20
    • Помечено в качестве ответа Puz27 8 июня 2017 г. 9:27
    7 июня 2017 г. 13:49
    Отвечающий

Все ответы

  • Send-MailMessage - без параметра -SmtpServer будет использовать значение  из $PSEmailServer, которое по умолчанию $null.

    MailContact - об этом знает Exchange сервер и клиент smtp не использует это.

    Чтобы работало, требуется обязательно указать SmtpServer и :

    1) -Credential - указать учетные данные от почтового аккаунта, от которого будет отсылаться письмо на Exchange( или любой другой почтовым сервис Yandex,Mail,Gmail)

    2) Для Exchange можно создать коннектор - Allow anonymous relay on Exchange servers , с ограниченнием только для определенного IP адреса.





    • Изменено KazunEditor 7 июня 2017 г. 11:32
    7 июня 2017 г. 11:30
    Отвечающий
  • 1) -Credential - указать учетные данные от почтового аккаунта, от которого будет отсылаться письмо на Exchange( или любой другой почтовым сервис Yandex,Mail,Gmail)

    Спасибо! Так дело в том, что отправляться будет с внутреннего адреса который заведен внутри организации на почту наружу. Тогда не совсем ясно зачем, учетные данные аккаунта от которого будут отсылаться письма?.

    7 июня 2017 г. 13:34
  • Send-MailMessage не отсылает письма напрямую удаленному smtp-серверу, а требует relay для своей работы.

    Send-MailMessage -> Exchange(или любой другой smtp-сервер) -> Проверка подлинности от кого отсылаем(или настройки коннектора приема )(user@domain.local) -> Exchange отсылает письмо на user@gmail.com

    Если требуется отправлять спам, то использовать модуль, который посылает письма напрямую к серверу получателя - Powershell module to send email without need for SMTP relay server

    Или встроенный SmtpClient:

    $host = (Resolve-DnsName -Name gmail.com -Type Mx | Sort Preference)[0].NameExchange
    $c = [System.Net.Mail.SmtpClient]::new($host)
    $s = [System.Net.Mail.MailAddress]::new("user@domain.local","Sender")
    $r = [System.Net.Mail.MailAddress]::new("user@gmail.com","Recipient")
    $m=[System.Net.Mail.MailMessage]::new($s,$r)
    $m.Subject = "Subject"
    $m.Body = "Message test"
    $c.Send($m)
    


    • Изменено KazunEditor 7 июня 2017 г. 14:20
    • Помечено в качестве ответа Puz27 8 июня 2017 г. 9:27
    7 июня 2017 г. 13:49
    Отвечающий
  • Да, спасибо! Почитал и сделал что то на подобии этого!