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は同様の配列を持っていると思います。ただし、もちろんバイナリは「本物」です)sendmail
ssmtp
Provides: mail-transport-agent
sendmail
sendmail
より一般的には、ここで簡単な電子メールと文書を一緒に集めることができます。
/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ケースに合わせて設定することです。スマートホストで送信機として使用します。
背後では、ほとんどのクライアント(たとえばmutt
、mailx
など)は通常、システム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でも動作します。