email - через - Как отправить электронную почту из командной строки?




отправка почты через командную строку (6)

Я хотел бы быстро отправить письмо из командной строки. Я понимаю, что, возможно, существует несколько разных способов сделать это.

Я ищу простой способ сделать это с терминала linux (скорее всего, это оболочка bash, но что-то должно сделать) и альтернативный способ сделать это в Windows. Я хочу, чтобы иметь возможность взломать электронную почту прямо в командной строке или иметь гибкость для передачи сообщения в программу командной строки. Как бы вы это сделали? Если у вас есть небольшие скрипты, это тоже будет хорошо.


IIRC вам также понадобится настроить агент передачи почты (MTA) для использования mail или большинства электронных библиотек электронной почты. Sendmail - самый известный, но настоящий свиньи, когда дело доходит до конфигурации. Exim , Qmail и Postfix - все популярные альтернативы, которые немного более современны.

Есть также более легкие MTA, которые могут отправлять почту только, а не получать: nullmailer, mstmp, ssmtp и т. Д.

Postfix по умолчанию для Ubuntu. В этой статье вики рассказывается о том, как ее настроить - обязательно разрешите переадресацию с вашего локального адреса!


Вот пример Power Shell сценария для отправки электронной почты:

$smtp = new-object Net.Mail.SmtpClient("mail.example.com")

if( $Env:SmtpUseCredentials -eq "true" ) {
    $credentials = new-object Net.NetworkCredential("username","password")
    $smtp.Credentials = $credentials
}
$objMailMessage = New-Object System.Net.Mail.MailMessage
$objMailMessage.From = "[email protected]"
$objMailMessage.To.Add("[email protected]")
$objMailMessage.Subject = "eMail subject Notification"
$objMailMessage.Body = "Hello world!"

$smtp.send($objMailMessage)

Вы также можете использовать эту версию sendmail для Windows. Это очень простое, стандартное поведение, подобное UNIX. Быстро. Не требует установки, просто вызовите EXE, где бы он ни находился в вашей системе.

Составление электронной почты:

echo To: [email protected], [email protected] >> the.mail
echo From: [email protected] >> the.mail
echo Subject: This is a SENDMAIL notification >> the.mail
echo Hello World! >> the.mail
echo This is simple enough. >> the.mail
echo .>> the.mail

Отправка файла:

\usr\lib\sendmail.exe -t < the.mail

type the.mail | C:\Projects\Tools\sendmail.exe -t

Если вы находитесь на сервере Linux, но почта недоступна (что может иметь место на общих серверах), вы можете написать простой PHP / Perl / Ruby (в зависимости от того, что доступно), чтобы сделать то же самое, например что-то как это:

#! /usr/bin/php
<?php

if ($argc < 3) {
    echo "Usage: " . basename($argv[0]) . " TO SUBJECT [CC]\n";
    exit(1);
}

$message = file_get_contents('php://stdin', 'r');
$headers = $argc >= 4 ? "Cc: $argv[3]\r\n" : null;

$ret = mail($argv[1], $argv[2], $message, $headers);

exit($ret ? 0 : 1);

Затем вызовите следующее:

mail [email protected] test < message

Если вы хотите сделать это из командной строки Windows, есть инструмент под названием blat, который можно использовать из приглашения CMD.

Это немного больше удовольствия от PowerShell. Поскольку PowerShell имеет доступ к .NET Framework, вы можете использовать классы из System.Net.Mail для отправки электронной почты. В репозитории сценариев сообщества PowerShell существует пример сценария.


$ echo "This is the email body" | mail -s "This is the subject" [email protected]

В качестве альтернативы:

$ cat | mail -s "A few lines off the top of my head" [email protected]
This is where my
multiline
message would go
^D

^ D - означает нажатие ctrl + d





command-line