コマンドラインから電子メールを送信するにはどうすればよいですか?
-
09-06-2019 - |
質問
コマンドラインからすぐにメールを送信したいと考えています。おそらくこれを行うにはさまざまな方法があると思います。
Linuxターミナルからこれを行う簡単な方法(おそらくbashシェルですが、何でもできるはずです)と、Windowsでこれを行う別の方法を探しています。コマンド ラインで直接電子メールを作成したり、メッセージをコマンド ライン プログラムに柔軟にパイプしたりできるようにしたいと考えています。これをどうやってやりますか?小さなスクリプトがある場合は、それも問題ありません。
解決
メールを使用できます:
$mail -s <subject> <recipients>
次に、メッセージを入力し、ピリオドのみの行で終了します。これにより、作業が完了したことが通知され、メッセージが送信されます。
STDIN から電子メールをパイプ入力することもでき、電子メールのテキストとして送信されます。
$<mail-generating-program> | mail -s <subject> <recipients>
このアプローチには小さな注意が 1 つあります。コンピューターがインターネットに接続されており、DNS 設定が適切に設定されていない限り、メッセージへの返信を受信できません。POP または IMAP 電子メール アカウントにリンクできる、より堅牢なコマンド ライン プログラムについては、次のいずれかを確認してください。 松 または 雑種.
他のヒント
$ echo "This is the email body" | mail -s "This is the subject" me@email.com
あるいは:
$ cat | mail -s "A few lines off the top of my head" me@here.com
This is where my
multiline
message would go
^D
^D - 押すことを意味します Ctrl+d
これも使えます メールを送る Windows用のバージョン。使い方は非常に簡単で、標準的な UNIX のような動作です。速い。インストールは必要ありません。システム上のどこにでも EXE を呼び出すだけです。
電子メールの作成:
echo To: you@example.com, me@example.com >> the.mail
echo From: them@example.com >> 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
Windows コマンドラインからこれを実行したい場合は、と呼ばれるツールがあります。 まったく CMD プロンプトから使用できます。
PowerShell からするともう少し楽しいです。PowerShell は .NET Framework にアクセスできるため、System.Net.Mail のクラスを使用して電子メールを送信できます。スクリプトの例は次のとおりです。 PowerShell コミュニティ スクリプト リポジトリ.
電子メールを送信するスクリプトの 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 = "script@mycompany.com"
$objMailMessage.To.Add("you@yourcompany.com")
$objMailMessage.Subject = "eMail subject Notification"
$objMailMessage.Body = "Hello world!"
$smtp.send($objMailMessage)
電子メール プログラムを呼び出したい場合は、次の記事を参照してください。
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 me@example.com test < message