19

コマンドラインからメールを素早く送信したい。これを行うには、おそらくさまざまな方法があると思います。

Linuxターミナルからこれを行う簡単な方法(おそらくbashシェルですが、何でもできるはずです)と、Windowsでこれを行う別の方法を探しています。コマンドラインで直接電子メールを作成できるようにしたい、またはメッセージをコマンドラインプログラムにパイプする柔軟性を持たせたい. これをどのように行うつもりですか?小さなスクリプトがある場合も問題ありません。

4

8 に答える 8

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

于 2008-08-31T00:11:36.247 に答える
10

メールを使用できます:

$mail -s <subject> <recipients>

次に、メッセージを入力し、ピリオドのみの行で終了します。これにより、完了したことが通知され、メッセージが送信されます。

電子メールを STDIN からパイプすることもでき、電子メールのテキストとして送信されます。

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

このアプローチに関する注意点 - コンピュータがインターネットに接続されていて、DNS 設定が適切に設定されていない限り、メッセージへの返信を受け取ることはできません。POP または IMAP 電子メール アカウントにリンクできる、より堅牢なコマンドライン プログラムについては、pineまたはmuttを調べてください。

于 2008-08-31T00:12:15.323 に答える
4

Windows用のこのsendmailバージョンも使用できます。使い方は非常に簡単で、標準の 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
于 2010-03-19T14:08:15.513 に答える
3

Windows コマンド ラインからこれを行う場合は、CMD プロンプトから使用できるblatというツールがあります。

PowerShell の方が少し楽しいです。PowerShell は .NET Framework にアクセスできるため、System.Net.Mail のクラスを使用して電子メールを送信できます。PowerShell Community Script Repositoryにサンプル スクリプトがあります。

于 2008-08-31T00:41:34.490 に答える
2

IIRCmailまたはほとんどの電子メール ライブラリを使用するには、メール転送エージェント (MTA) を構成する必要もあります。Sendmailは最もよく知られていますが、構成に関しては本当に豚です。EximQmail、およびPostfixはすべて、より現代的な人気のある代替手段です。

また、メールを送信するだけで受信できない軽量の MTA もあります: nullmailer、mstmp、ssmtp など。

Postfix は Ubuntu のデフォルトです。この wiki 記事では、設定方法について説明しています。ローカル アドレスからの転送のみを許可してください。

于 2008-08-31T01:38:03.900 に答える
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 me@example.com test < message
于 2011-08-04T09:08:47.960 に答える
1

メール プログラムを起動する場合は、次の記事を参照してください。

クロスプラットフォームの方法で件名と本文を指定してデフォルトのメール プログラムを開くにはどうすればよいですか?

于 2008-08-31T01:57:50.140 に答える