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

Зачем это нужно
- Автоматизация уведомлений (скрипты, задания по расписанию).
- Быстрая отсылка без переключения в почтовый клиент.
- Инструмент для администраторов и разработчиков при тестировании и мониторинге.
Краткое руководство — что потребуется
- Установленная Windows и доступ к PowerShell (встроен в современные версии Windows).
- Учётные данные почтовой учётной записи (email и пароль или пароль приложения для 2FA).
- 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 $AttachmentImportant: если вы не хотите прикрепление или копию, удалите соответствующие переменные и параметры из команды 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.
Мини-методология для внедрения в задания по расписанию
- Написать скрипт отправки и протестировать вручную.
- Добавить логирование результата (успех/ошибка, тело ответа).
- Настроить Планировщик заданий Windows (Task Scheduler) с учётной записью, имеющей доступ к сети.
- Повторно тестировать поведение при смене паролей и после перезагрузки системы.
Тесты приёмки (коротко)
- Скрипт отправляет письмо на указанный адрес в течение 30 секунд.
- При неправильных учётных данных скрипт возвращает понятную ошибку авторизации.
- Письмо приходит с ожидаемым телом и вложениями (если указаны).
Короткий глоссарий
- SMTP: протокол для отправки почты.
- STARTTLS: команда для перевода соединения в защищённый режим.
- Get-Credential: команда PowerShell для безопасного ввода учётных данных.
Краткое резюме
PowerShell — простой и мощный инструмент для отправки писем через SMTP. Он удобен для автоматизации и кратких уведомлений, но требует внимательного отношения к безопасности учётных данных и настройкам провайдера. Если стандартный SMTP недоступен, рассмотрите API провайдера или специализированные библиотеки.
Примечание: изображение показывает пример окна PowerShell с командой отправки почты.
Автор
Редакция
Похожие материалы
Windows 11
Как скачать и использовать Quick Assist в Windows 11
Linux
KDE Connect: iPhone и Linux — подключение и инструкция
Windows 10
Удалить Anniversary Update и откатить Windows 10
Игры
Как снизить высокий пинг в Microsoft Flight Simulator
Игры
Как использовать SweetFX для улучшения графики
Windows