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

Как отправить email через PowerShell на Windows

3 min read DevOps Обновлено 13 Dec 2025
Как отправить email через PowerShell
Как отправить email через PowerShell

Рабочий стол Windows с открытой почтой и иконкой PowerShell

Зачем это нужно

  • Автоматизация уведомлений (скрипты, задания по расписанию).
  • Быстрая отсылка без переключения в почтовый клиент.
  • Инструмент для администраторов и разработчиков при тестировании и мониторинге.

Краткое руководство — что потребуется

  1. Установленная Windows и доступ к PowerShell (встроен в современные версии Windows).
  2. Учётные данные почтовой учётной записи (email и пароль или пароль приложения для 2FA).
  3. SMTP-сервер и порт почтового провайдера.

Пример: отправка письма через Gmail (шаблон)

Используйте этот шаблон в PowerShell. Первые строки задают переменные, а строка Send-MailMessage выполняет отправку.

# Переменные: замените на свои значения
$From = "EmailAddress@gmail.com"
$To = "SomeOtherAddress@whatever.com"
$Cc = "AThirdUser@somewhere.com"
$Attachment = "C:\users\Username\Documents\SomeTextFile.txt"
$Subject = "Вот тема письма"
$Body = "Это текст сообщения"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = 587

# Введите учётные данные (всплывающее окно ввода логина/пароля)
$Credential = Get-Credential

# Отправка сообщения через SMTP с SSL/TLS
Send-MailMessage -From $From -To $To -Cc $Cc -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort -UseSsl -Credential $Credential -Attachments $Attachment

Important: если вы не хотите прикрепление или копию, удалите соответствующие переменные и параметры из команды Send-MailMessage.

Популярные SMTP-серверы и порты

  • Gmail: smtp.gmail.com, порт 587 (STARTTLS)
  • Yahoo: smtp.mail.yahoo.com, порт 465 (SSL)
  • Outlook/Office365: smtp-mail.outlook.com, порт 587 (STARTTLS)

Советы по безопасности

  • Не храните пароли в явном виде в скриптах. Используйте Get-Credential или защищённое хранилище.
  • Если у вас включён двухфакторный доступ, создайте пароль приложения для SMTP, если провайдер поддерживает такую опцию.
  • Используйте -UseSsl или STARTTLS (порт 587) для шифрования соединения.
  • Дайте минимальные права учётной записи — по возможности используйте отдельную техучётку для отправки системных уведомлений.

Когда этот способ не сработает

  • Провайдер отключил доступ по обычному SMTP/паролю (требуется OAuth2). В таких случаях понадобится более сложная интеграция или использование API провайдера.
  • Блокировка на уровне сети/файрвола: убедитесь, что исходящие соединения на порт SMTP не блокируются.

Отладка — типичные ошибки и как их исправить

  • Ошибка авторизации: проверьте логин/пароль или используйте пароль приложения.
  • Timeout/не удаётся подключиться: проверьте порт и доступность SMTP-сервера, настройки прокси/фаервола.
  • SSL/TLS ошибки: попробуйте другой порт (465 для SSL или 587 с -UseSsl), обновите .NET/PowerShell если требуется.

Чеклист перед запуском (роль: админ / разработчик / пользователь)

  • Админ: убедиться в доступности SMTP и белых списках IP.
  • Разработчик: протестировать скрипт в изолированной среде и логировать ответ сервера.
  • Непрофильный пользователь: проверить учётные данные и включить пароль приложения при 2FA.

Мини-методология для внедрения в задания по расписанию

  1. Написать скрипт отправки и протестировать вручную.
  2. Добавить логирование результата (успех/ошибка, тело ответа).
  3. Настроить Планировщик заданий Windows (Task Scheduler) с учётной записью, имеющей доступ к сети.
  4. Повторно тестировать поведение при смене паролей и после перезагрузки системы.

Тесты приёмки (коротко)

  • Скрипт отправляет письмо на указанный адрес в течение 30 секунд.
  • При неправильных учётных данных скрипт возвращает понятную ошибку авторизации.
  • Письмо приходит с ожидаемым телом и вложениями (если указаны).

Короткий глоссарий

  • SMTP: протокол для отправки почты.
  • STARTTLS: команда для перевода соединения в защищённый режим.
  • Get-Credential: команда PowerShell для безопасного ввода учётных данных.

Краткое резюме

PowerShell — простой и мощный инструмент для отправки писем через SMTP. Он удобен для автоматизации и кратких уведомлений, но требует внимательного отношения к безопасности учётных данных и настройкам провайдера. Если стандартный SMTP недоступен, рассмотрите API провайдера или специализированные библиотеки.

Окно PowerShell с вводом команды отправки почты

Примечание: изображение показывает пример окна PowerShell с командой отправки почты.

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

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

Как скачать и использовать Quick Assist в Windows 11
Windows 11

Как скачать и использовать Quick Assist в Windows 11

KDE Connect: iPhone и Linux — подключение и инструкция
Linux

KDE Connect: iPhone и Linux — подключение и инструкция

Удалить Anniversary Update и откатить Windows 10
Windows 10

Удалить Anniversary Update и откатить Windows 10

Как снизить высокий пинг в Microsoft Flight Simulator
Игры

Как снизить высокий пинг в Microsoft Flight Simulator

Как использовать SweetFX для улучшения графики
Игры

Как использовать SweetFX для улучшения графики

Обновлённый «Сбросить этот компьютер» в Windows 10
Windows

Обновлённый «Сбросить этот компьютер» в Windows 10