Как отправить электронное письмо из командной строки в Windows
Быстрые ссылки
- Отправка почты из PowerShell
В Windows нет встроенной команды в Command Prompt для отправки почты, но PowerShell позволяет использовать .NET Framework, поэтому вы можете создать и отправить e‑mail прямо из командной строки PowerShell.
Пример: для удобства я выложил примерный скрипт, доступный по запросу.
Отправка письма из PowerShell
Примечание: В примере ниже используются SMTP‑серверы Gmail, поэтому для отправки потребуется учётная запись Google. Скрипт легко адаптировать к любому другому SMTP‑серверу.
Первое, что нужно сделать — запустить PowerShell.

Отправить e‑mail из PowerShell довольно просто: скопируйте шаблон и измените параметры на свои.
$EmailFrom = "yourgmailadress@gmail.com"
$EmailTo = "destination@somedomain.com"
$Subject = "The subject of your email"
$Body = "What do you want your email to say"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("usr", "pass");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)Объяснение переменных (коротко):
- $EmailFrom — адрес отправителя (ваш Gmail).
- $EmailTo — адрес получателя.
- $Subject — тема письма.
- $Body — тело письма.
- usr — имя пользователя Gmail (обычно полный адрес или логин).
- pass — пароль (см. раздел безопасности ниже).
Ниже — пример отправки мне самому (на скриншоте учётные данные удалены из соображений безопасности).

Это всё, что требуется для базовой отправки.

Важные замечания по безопасности и авторизации
- Google не поддерживает вход по обычному паролю для «менее защищённых приложений». Используйте пароль приложения (App Password) или реализуйте OAuth2 для полноценной безопасности.
- Никогда не храните пароли в открытом виде в скриптах в продакшне. Используйте защищённые хранилища (Windows Credential Manager, зашифрованные файлы) или переменные окружения.
- Для корпоративных SMTP используйте TLS/SSL и проверенные учётные записи, предпочтительно с ограниченными правами.
Как использовать пароль приложения:
- Включите двухфакторную аутентификацию в аккаунте Google.
- Создайте пароль приложения в разделе Безопасность → Пароли приложений.
- Подставьте полученный 16‑символьный пароль вместо “pass” в скрипте.
Альтернативные подходы
- Send-MailMessage — устаревшая встроенная команда PowerShell; её использование не рекомендуется для новых сценариев.
- Использовать специализированные утилиты (msmtp, sendmail для Windows, сторонние клиенты) если требуются сложные заголовки и вложения.
- Встроенные API почтового провайдера (Gmail API) с OAuth2 для крупных проектов и лучшей безопасности.
Когда этот подход не сработает
- Порт 587/SMTP заблокирован брандмауэром или провайдером сети.
- Аккаунт Google требует дополнительной валидации (CAPTCHA, блокировка входа с неизвестных устройств).
- Для почтовых серверов с ограничениями по аутентификации требуется использование OAuth2 вместо простого логина/пароля.
Чеклист перед запуском
- Запущен PowerShell с нужными правами.
- Заменили $EmailFrom и $EmailTo на реальные адреса.
- Заменили usr и pass на валидные учётные данные или пароль приложения.
- Разрешён исходящий трафик на smtp.gmail.com:587 в брандмауэре.
- Тестовая отправка выполнена и письмо получено.
Отладка и типичные ошибки
- Ошибка аутентификации — проверьте логин, пароль и наличие пароля приложения.
- Ошибка подключения — проверьте DNS и доступность smtp.gmail.com, порт 587.
- TLS/SSL ошибки — убедитесь, что $SMTPClient.EnableSsl = $true и что среда поддерживает TLS 1.2.
Короткая методика для автоматизации (mini‑playbook)
- Сохраните скрипт в файл SendEmail.ps1 с переменными как параметры.
- Поместите логин в Windows Credential Manager и читайте его через Get-StoredCredential.
- Настройте задачу в Планировщике Windows для регулярной отправки.
- Логируйте результаты отправки в файл с отметкой времени.
Контрпример и ограничения
Если вы хотите отправлять массовые рассылки или динамические шаблоны, лучше перейти на специализированные сервисы (SendGrid, Mailgun) или использовать Gmail API, так как SMTP через учётную запись может привести к блокировке за слишком большой объём отправки.
Ресурсы и советы по безопасности
- Используйте пароли приложений или OAuth2.
- Не храните секреты в репозиториях.
- Для интеграций в крупной инфраструктуре используйте сервисные учётные записи и отдельные SMTP‑реле.
Краткое резюме
Этот метод даёт простой и быстрый способ отправить письмо из PowerShell, используя .NET‑классы и SMTP. Для одноразовых задач или администрирования подходит отлично; для производства — следуйте рекомендациям по безопасности и используйте более устойчивые методы авторизации.
Похожие материалы
Как установить VPN в Ubuntu — руководство
Microsoft Power Automate: руководство по автоматизации
Как включить тёмную тему в Facebook на Android
Отключить проверку версий расширений GNOME Shell
Как заблокировать пользователя в LinkedIn