Gmailを使用してコマンドラインで1行のメールを送信する最も簡単な方法は何ですか?

Gmailを使用してコマンドラインで1行のメールを送信する最も簡単な方法は何ですか?

RaspbianとUbuntu 16.04 LTSを使用しているため、汎用Linuxソリューションが必要です。

要件は簡単です。

コマンドラインから1行の電子メールを送信する方法が必要です。

私はこの特定のRpi3に対してのみGmailアカウントを設定しました。[Eメール保護]- 2FAなし

これで、ユーザーの介入なしにどこからでも(クローンを含む)1行のメールメッセージを送信できるはずです。


また、基本的にstdin

答え1


Gmailを介して1行のメッセージを送信する最も簡単な答えはssmtpを使用することです。


次のコマンドを使用してインストールします。

sudo apt-get update
sudo apt-get install ssmtp

編集内容/etc/ssmtp/ssmtp.confは次のとおりです。

[email protected]
mailhub=smtp.gmail.com:465
FromLineOverride=YES
[email protected]
AuthPass=testing123
UseTLS=YES

次の行を送信します。

echo "Testing...1...2...3" | ssmtp [email protected]

または

printf "Subject: Test\n\nTesting...1...2...3" | ssmtp [email protected]

その後、* nixが言ったように、数秒以内にメッセージが表示されます。

あなたの[Eメール保護]アカウント、そしてチャジャン、ここにあります!


これは、次のようにファイルを送信するときにもうまく機能します。

cat program.py | ssmtp [email protected]

プログラムがメールボックスに表示されます

ファイルがテキストファイルの場合、最初の行が表示されることがあります。Subject: xxxxxx

これは、コンテンツを表すタイトル行を持つデータを私に送信するさまざまなcronジョブと連携します。


これは、stdinを介してssmtpにパイプされたメッセージを準備するすべてのものに適用されます。


他のユーザーからこれらのファイルを保護するなどの詳細については、次の記事を参照してください。

Raspberry PiコマンドラインからEメールを送信する


Rui必要に応じて、書式設定されたメッセージファイルで変更される可能性があるロックアドレスについて、以下の投稿されたFROM:回答を確認してください。


今、同じ方法でテキストメッセージを送信する方法を見つけることができれば幸いです。

答え2

ssmtp多くのSendmailラッパーの1つだけです。これらはすべて標準入力としてメッセージを受け取り、オプションでアドレス一覧をコマンドライン引数として受け入れ、すべてsendmail伝統的なSendmailコマンドラインAPI(少なくとも基本機能)を実装するsendmailというバイナリを提供します。ただし、正しくするには、メッセージが正しい形式のRFC822メッセージである必要があります。少なくともSubject:タイトルは必要です。

ssmtp [email protected] <<<$'Subject: testing 1...2...3'

(を使用すると、.Postfix、Eximへのシンボリックリンクのみがssmtpあり、他のすべてのMTAは同様の配列を持っていると思います。ただし、もちろんバイナリは「本物」です)sendmailssmtpProvides: mail-transport-agentsendmailsendmail

より一般的には、ここで簡単な電子メールと文書を一緒に集めることができます。

/usr/lib/sendmail -oi -t <<____HERE
Subject: testing
To: [email protected]

Here we interpolate the shell variable $result
____HERE

(Sendmail-tオプションは、標準入力で受信したメッセージヘッダーから受信者のリストを取得することを意味します。Sendmailへの正確なパスはプラットフォームによって異なります。)

別の一般的なバリエーションは、複数のコマンドの出力を組み合わせることです。ヘッダーとメッセージ本文の間に空白行(「ネック」)があります。

( printf "Subject: random number\n\n"
  dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -D -An ) |
sendmail [email protected]

非常に単純なASCIIプレーンテキストメッセージ以外の場合は、現在使用されている正しいMIMEメッセージを作成する方法を知っておく必要がありますmutt。一部のプラットフォームでは、添付ファイルと非ASCIIテキストを送信する方法があるかどうかを知ってmailいますmailxが、これはすべてではありません。ポータブル。

ここで問題は、電子メールを受信して​​送信しようとするクライアントを見つけるのではなく、MTAがリモートサーバーのユーザー名とパスワードを知る必要がある特定のGmailケースに合わせて設定することです。スマートホストで送信機として使用します。

背後では、ほとんどのクライアント(たとえばmuttmailxなど)は通常、システムsendmailからメッセージを受信するために背後で実行されます。

答え3

OPの答えに追加:

構成時にssmtpユーザーが送信者を定義することを許可または無効にすることも、メッセージがスパムフォルダに入らないなど、さまざまな理由でドメインを上書きすることもできます。

以下に追加できます/etc/ssmtp/ssmtp.conf

# Where will the mail seem to come from?
rewriteDomain=my_internet_domain.uk

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

YESは家庭用Raspberry Piで使用できますが、セキュリティの観点からマルチユーザーシステムでの使用はお勧めできません。

答え4

「メール」に何の問題がありますか?

echo "こんにちは" | mail -s "重要メール"[Eメール保護]

"mail" は、bsd-mailx パッケージから /usr/bin/bsd-mailx への /etc/alternate リンクです。私はそれが基本的にそこにあると信じています。たとえば、cronスクリプトからメールを送信するユーティリティです。

UbuntuとFreeBSDでも動作します。

関連情報