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





$ 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
Вы можете использовать почту:
$mail -s <subject> <recipients>
Затем вы вводите свое сообщение и заканчиваете его строкой, в которой есть только точка. Это сигнализирует о том, что вы закончили, и отправляет сообщение.
Вы также можете отправить свое электронное письмо из STDIN, и оно будет отправлено в виде текста электронного письма:
$<mail-generating-program> | mail -s <subject> <recipients>
Одно небольшое замечание по поводу этого подхода - если ваш компьютер не подключен к Интернету и ваши настройки DNS не установлены должным образом, вы не сможете получать ответы на свое сообщение. Для более надежной программы командной строки вы можете связать свою учетную запись электронной почты POP или IMAP, проверьте либо сосна, либо дворняга.
Здравствуй. Почта - это не стандартная команда Windows. Есть идеи, где \ как я могу это получить? Спасибо!
@EugeneS Это стандартная команда Linux, поэтому она, вероятно, в Cygwin cygwin.com
Если вы хотите сделать это из командной строки Windows, есть инструмент под названием блат, который можно использовать из командной строки CMD.
Это немного веселее от PowerShell. Поскольку PowerShell имеет доступ к .NET Framework, вы можете использовать классы из System.Net.Mail для отправки электронной почты. На Репозиторий сценариев сообщества PowerShell есть пример сценария.
IIRC вам также придется настроить агент передачи почты (MTA) для использования mail или большинства почтовых библиотек. Отправить письмо - самый известный, но настоящий болван, когда дело доходит до конфигурации. Exim, Qmail и Постфикс - популярные альтернативы, которые немного более современны.
Существуют также более легкие MTA, которые могут только отправлять почту, но не получать ее: nullmailer, mstmp, ssmtp и т. д.
Postfix используется по умолчанию для Ubuntu. Эта вики-статья описывает, как его настроить - убедитесь, что пересылка разрешена только с вашего локального адреса!
Если вы хотите запустить почтовую программу, прочтите эту статью:
Как открыть почтовую программу по умолчанию с темой и телом сообщения кроссплатформенным способом?
Вот пример сценария Powershell для отправки электронной почты:
$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)
Вы также можете использовать эту версию Отправить письмо для 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
смехотворно бесполезное использование кота :)