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

Как отправить электронное письмо из командной строки в Windows

4 min read Windows Обновлено 03 Dec 2025
Отправить email из командной строки Windows
Отправить email из командной строки Windows

Быстрые ссылки

  • Отправка почты из PowerShell

В Windows нет встроенной команды в Command Prompt для отправки почты, но PowerShell позволяет использовать .NET Framework, поэтому вы можете создать и отправить e‑mail прямо из командной строки PowerShell.

Пример: для удобства я выложил примерный скрипт, доступный по запросу.

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

Примечание: В примере ниже используются SMTP‑серверы Gmail, поэтому для отправки потребуется учётная запись Google. Скрипт легко адаптировать к любому другому SMTP‑серверу.

Первое, что нужно сделать — запустить PowerShell.

Скриншот: окно 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 и проверенные учётные записи, предпочтительно с ограниченными правами.

Как использовать пароль приложения:

  1. Включите двухфакторную аутентификацию в аккаунте Google.
  2. Создайте пароль приложения в разделе Безопасность → Пароли приложений.
  3. Подставьте полученный 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)

  1. Сохраните скрипт в файл SendEmail.ps1 с переменными как параметры.
  2. Поместите логин в Windows Credential Manager и читайте его через Get-StoredCredential.
  3. Настройте задачу в Планировщике Windows для регулярной отправки.
  4. Логируйте результаты отправки в файл с отметкой времени.

Контрпример и ограничения

Если вы хотите отправлять массовые рассылки или динамические шаблоны, лучше перейти на специализированные сервисы (SendGrid, Mailgun) или использовать Gmail API, так как SMTP через учётную запись может привести к блокировке за слишком большой объём отправки.

Ресурсы и советы по безопасности

  • Используйте пароли приложений или OAuth2.
  • Не храните секреты в репозиториях.
  • Для интеграций в крупной инфраструктуре используйте сервисные учётные записи и отдельные SMTP‑реле.

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

Этот метод даёт простой и быстрый способ отправить письмо из PowerShell, используя .NET‑классы и SMTP. Для одноразовых задач или администрирования подходит отлично; для производства — следуйте рекомендациям по безопасности и используйте более устойчивые методы авторизации.

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

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

Как установить VPN в Ubuntu — руководство
Linux

Как установить VPN в Ubuntu — руководство

Microsoft Power Automate: руководство по автоматизации
Автоматизация

Microsoft Power Automate: руководство по автоматизации

Как включить тёмную тему в Facebook на Android
Android.

Как включить тёмную тему в Facebook на Android

Отключить проверку версий расширений GNOME Shell
Linux

Отключить проверку версий расширений GNOME Shell

Как заблокировать пользователя в LinkedIn
Социальные сети

Как заблокировать пользователя в LinkedIn

Отключить звуки в приложении Facebook
Руководство

Отключить звуки в приложении Facebook