2008-08-31 2 views
15

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

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

ответ

8

Вы можете использовать почту:

$mail -s <subject> <recipients> 

Затем введите ваше сообщение и завершите его строкой t шляпа имеет только период. Это означает, что вы закончили и отправили сообщение.

Вы можете также трубы вашей электронной почты от STDIN и оно будет отправлены как текст по электронной почте:

$<mail-generating-program> | mail -s <subject> <recipients> 

Один небольшой записка с этим подходом - если ваш компьютер не подключен к Интернету и вашему DNS настройки установлены правильно, вы не сможете получать ответы на свое сообщение. Для более надежной командной строки вы можете ссылаться на свою учетную запись электронной почты POP или IMAP, проверьте либо pine, либо mutt.

+0

Привет. Почта не является стандартной командой Windows. Любая идея, где \, как я могу ее получить? Благодаря! – 2013-06-18 08:56:37

11
$ 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

+2

смешного бесполезно использовать кота :) – hop 2009-02-18 11:01:10

3

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

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

2

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

Есть также более легкие СПМ, которые только в состоянии отправить почту, не получить его: nullmailer, mstmp, SSMTP и т.д.

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

2

Вот пример 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) 
4

Вы можете также используйте эту версию sendmail для окон. Это очень простое, стандартное поведение, подобное 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 
1

Если вы на сервере 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 
Смежные вопросы