Powershell отправка почты через gmail

Powershell отправка почты через gmail

В данной записи описан простой и короткий скрипт на Powershell для отправки почты через gmail и решение ошибки 5.5.1.

При попытке отправить письмо через gmail в Powershell скрипте я получал следующую ошибку:

Серверу SMTP требовалось защищенное соединение, или подлинность клиента не была установлена. Ответ сервера: 5.5.1 Authentication Required. Learn more at

Или по английски:

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required

Далее опишу что нужно сделать, чтобы избавиться от ошибки и приведу пример самого powershell скрипта.

Если у вас в google НЕ включена двух-факторная авторизация (подтверждение входа через отправку sms на телефон)

Необходимо разрешить непроверенным приложениям доступ к вашему аккаунту, это делается на странице: google.com/settings/security/lesssecureapps

Если не разрешите, то к Вам на почту будут приходить письма с темой "Предотвращена попытка входа в аккаунт Google" и в самом powershell скрипте будете получать вышеупомянутую ошибку.

Если у вас в google включена двух-факторная авторизация

Нужно сгенерировать отдельный пароль для доступа powershell-скрипта к Вашему аккаунту. Это делается на странице security.google.com/settings/security/apppasswords

Выбираем в выпадающем списке "Приложение" пункт "Другое" и пишем какое-то свое название, я написал "Powershell on elimS Notebook". Жмем кнопку "Создать" и Вам будет выдан шестнадцатизначный пароль, который нужно использовать в скрипте, пример пароля: "ifizbeaatmuzqonp" - 16 букв в нижнем регистре, без пробелов.

Powershell скрипт для отправки почты через gmail

#Входящие данные сообщения:
$From = "elimsmail@gmail.com"
$To = "test@gmail.com"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "elimsmail"
$Password = "yourpassword"
$subject = "hello"
$body = "bodytext"

#формируем сообщение в формате html:
$message = New-Object System.Net.Mail.MailMessage $From, $To
$message.Subject = $subject
$message.IsBodyHTML = $true
$message.Body = $body

#Отправляем:
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$smtp.Send($message)

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

Где этот скрипт можно применить? Я таким образом настроил автопостинг в twitter (вернее автотвитеринг =) ) через сервис ifttt.com и рецепт "If send trigger@ifttt.com any email from elimsmail@gmail.com, then post a tweet to @мой_твитер_аккаунт"

Понравилось? =) Поделись с друзьями:

Обсуждение записи “Powershell отправка почты через gmail”

  1. Татьяна says:

    Здравствуйте! Не смогла пройти мимо и не поблагодарить! Огромное Вам спасибо! Я уже с ног просто сбилась, почему у меня ошибка в программе, не пускает на гугл-почту и все тут! Весь инет перекопала, и только у Вас прочитала, что проблема может быть в двухэтапной авторизации. По Вашему описанию задала пароль для своего приложения и сразу все заработало!
    Спасибо Вам огромное!

  2. Владимир Демянович (elims.org.ua) says:

    Татьяна, здравствуйте. Рад, что моя заметка Вам пригодилась =)

  3. Людмила says:

    Здравствуйте, Владимир! При настройке сборщика писем из Gmail в Gmail
    Сервер отказал в доступе по протоколу POP3 для данного имени пользователя и пароля.
    Ошибка сервера: «[AUTH] Web login required: https://support.google.com/mail/bin/answer.py?answer=78754″
    В почте появляется письмо от Google, что они перекрыли попытку несанкционированного доступа к аккаунту. Уже несколько дней пытаюсь настроить, испробовала все методы предложенные Google, но у вы…. Мне не хотелось бы разрешать непроверенным приложениям доступ к аккаунту. Двухэтапную авторизацию не включала. Кроме того, перестала загружаться почта из старого Gmail в Thunderbird, соответственно и новый Gmail не подключается. Ошибка та же. Помогите пожалуйста решить эту проблему. Прочитала Вашу статью, и думаю, что это может решить мою проблему. Но т.к я полный чайник))), не совсем поняла, что и как надо сделать.
    Если возможно, напишите, пожалуйста подробно
    Заранее спасибо!

  4. Владимир Демянович (elims.org.ua) says:

    Добрый день, Людмила. Пробовали пройти по инструкции которая описана тут?: https://productforums.google.com/forum/#!topic/gmail-ru/5RstlEBs9NU

    Имеется в виду авторизация в приватном режиме и ввод капчи на странице которая там указана?

  5. Людмила says:

    Да,полностью следовала этой инструкции. Чистила кэш и куки, меняла парполь,сообщила в Google, что попытка входа была заблокирована по ошибке (https://support.google.com/accounts/answer/2618603?p=client_login_m&rd=1)

  6. Владимир Демянович (elims.org.ua) says:

    Людмила, тогда, к сожалению, я ничего не могу посоветовать.

  7. Людмила says:

    Спасибо!

  8. mr says:

    Божественно !

  9. Артур says:

    Здравствуйте, Владимир.
    Подскажите пожалуйста, можно ли создавать контакты в почте gmail через команды Powershell? никак не найду просто информацию, т.к. только начинаю осваивать.

  10. Владимир Демянович (elims.org.ua) says:

    Здравствуйте. Не пробовал.

    Тут больше вопрос не к возможностям powershell, а к возможностям протокола или api

  11. Артур says:

    Хорошо, спасибо. Буду изучать)

Обсудить