Гид по технологиям

Отправка письма через PowerShell

4 min read PowerShell Обновлено 09 Jan 2026
Как отправить email через PowerShell
Как отправить email через PowerShell

Иконка электронной почты на рабочем столе Windows

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

Набор команд PowerShell в консоли на экране

Как отправить письмо через PowerShell

  1. Откройте окно PowerShell: нажмите «Пуск» и введите PowerShell.
  2. Пример шаблона для Gmail. Первые строки задают переменные, а последняя — отправляет письмо. Этот пример использует безопасное чтение пароля и объект PSCredential для передачи учётных данных:
$From = "EmailAddress@gmail.com"
$To = "SomeOtherAddress@whatever.com"
$Cc = "AThirdUser@somewhere.com"
$Attachment = "C:\users\Username\Documents\SomeTextFile.txt"
$Subject = "Here's the Email Subject"
$Body = "This is what I want to say"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = 587
# Ввод пароля в защищённой форме (не храните пароль в открытом виде в скрипте)
$SecurePassword = Read-Host "Введите пароль для $From" -AsSecureString
$Cred = New-Object System.Management.Automation.PSCredential($From, $SecurePassword)
Send-MailMessage -From $From -To $To -Cc $Cc -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort -UseSsl -Credential $Cred -Attachments $Attachment
  1. Серверы и порты популярных провайдеров:

    • Gmail: smtp.gmail.com, порт 587 (TLS)
    • Yahoo: smtp.mail.yahoo.com, порт 465 (SSL)
    • Outlook/Office 365: smtp-mail.outlook.com, порт 587 (TLS)
  2. Если вложение или копия не нужны, удалите переменные $Attachment и $Cc и уберите их из команды Send-MailMessage.

  3. Ключ -UseSsl включает шифрование TLS/SSL. Для получения уведомлений об успешной доставке можно добавить -DeliveryNotificationOption OnSuccess.

  4. Вариант с интерактивным запросом учётных данных: используйте $Cred = Get-Credential и затем передавайте -Credential $Cred.

Важно: многие почтовые провайдеры требуют двухфакторную аутентификацию и/или «пароль приложения» для SMTP-доступа. Если отправка не проходит, проверьте настройки безопасности учётной записи.

Альтернативные подходы

  • Использовать библиотеку MailKit (NuGet) или System.Net.Mail в скриптах .NET — предпочтительнее в продакшене.
  • Для автоматизации из Google Sheets/Apps Script — отправлять письма через API Google.
  • Если вам нужен надёжный массовый отправитель — используйте SMTP-провайдера (SendGrid, Amazon SES) с API и ключами.

Безопасность и лучшие практики

  • Никогда не храните пароль в открытом виде в скриптах. Используйте Read-Host -AsSecureString, Windows Credential Manager или защищённый секретный хранилище.
  • Минимизируйте права: используйте учетную запись с минимальным набором прав, созданную специально для автоматизации почты.
  • Логи: не выводите содержимое писем и паролей в лог-файлы.
  • Ограничьте частоту отправки, чтобы избежать блокировки со стороны провайдера.

Когда это может не сработать

  • Неправильный порт или адрес SMTP.
  • Блокировка на стороне почтового провайдера (2FA, запрет «менее безопасных приложений»).
  • Брандмауэр на локальной машине или в сети блокирует исходящие соединения по SMTP.
  • В PowerShell Core/PowerShell 7 часть устаревших модулей и команд может вести себя иначе — рассмотрите современные библиотеки.

Мини-методология для внедрения (шаги)

  1. Прототип: создать локальный скрипт и протестировать отправку на тестовую почту.
  2. Безопасность: настроить учётную запись с минимальными правами и применить хранение секретов.
  3. Мониторинг: добавить логирование результата и оповещения об ошибках.
  4. Перенос в продакшн: интегрировать в план автоматизации, учесть rate limits.

Чек-лист для ролей

  • Для администратора:

    • Настроить отдельную учётную запись SMTP.
    • Ограничить IP/права и активировать двухфакторную аутентификацию.
    • Убедиться, что сетевые правила позволяют исходящие подключения на нужный порт.
  • Для разработчика:

    • Использовать безопасные методы хранения паролей.
    • Писать обработку ошибок и повторные попытки.
    • Покрыть кейсы тестами (см. Критерии приёмки).
  • Для пользователя/скрипт-оператора:

    • Проверить корректность адресов и вложений.
    • Не сохранять пароли в открытом виде.

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

  • Пример для Gmail: smtp.gmail.com:587 + TLS
  • Yahoo: smtp.mail.yahoo.com:465 + SSL
  • Outlook: smtp-mail.outlook.com:587 + TLS
  • Команда для интерактива: $Cred = Get-Credential

Критерии приёмки

  • Письмо доставлено на целевой ящик без ошибок (нет bounce).
  • Логи фиксируют успешную отправку и время.
  • Нет утечек секретов в логах или скриптах.

Отладка и типовые ошибки

  • «Unable to connect» — проверьте порт, адрес и брандмауэры.
  • «Authentication failed» — перепроверьте пароль/пароль приложения и 2FA.
  • Блокировка провайдером — спросите у поддержки провайдера, какие требования к SMTP.

Справочный мини‑шаблон безопасности

  • Храните секреты в Windows Credential Manager или в специализированном vault.
  • Ограничьте домен/адрес отправителя в политике.
  • Переходите на API провайдера для массовой рассылки.

Резюме

PowerShell — быстрый инструмент для отправки писем из скриптов и автоматизации. Для разовых или внутренних задач можно использовать встроенные команды и Send-MailMessage, но для продакшена и массовых рассылок лучше выбирать современные библиотеки или SMTP-провайдеры с API. Всегда применяйте безопасное хранение учётных данных и проверяйте требования вашего провайдера.

Важное: если у вас включена двухфакторная аутентификация, настройте пароль приложения или используйте подходы, рекомендованные вашим почтовым провайдером.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Градиенты в Canva: добавить и настроить
Дизайн

Градиенты в Canva: добавить и настроить

Ошибка Disabled accounts can't be contacted в Instagram
Социальные сети

Ошибка Disabled accounts can't be contacted в Instagram

Генерация случайных чисел в Google Sheets
Google Таблицы

Генерация случайных чисел в Google Sheets

Прокручиваемые скриншоты в Windows 11
Windows

Прокручиваемые скриншоты в Windows 11

Как установить корпусной вентилятор в ПК
Железо

Как установить корпусной вентилятор в ПК

Check In в iOS 17: настройка и безопасность
How-to

Check In в iOS 17: настройка и безопасность