Arduinoからメールを送信する

SMTP2GOのセットアップと送信テスト


Arduinoでセンサーなどから情報を取ったときに、どうやって人間に知らせるか、悩ましいところです。
例えば温度や湿度など、常に見たい情報は2602LCDや8セグメントLEDに表示しておけばいいですが、
異状を検出したときなど、すぐにアラームとして知らせたいときにはメールとしてスマホに送るのが便利です。
そこで、Arduinoからメールを送る方法を紹介します。

最近のメールサーバーはいずれもSSLやTSLでの認証を行う仕組みになっていて、
telnetを使ったテキストベースで、メール送信を簡単に行うことがができません。
SMTP2GOというサービスを使うと、テキストベースで簡単 にメール送信を行うことができる様になります。
SMTP2GOについては、日本語のページがほとんどありませんが、SMTP専用の転送サービスです。

最初に以下のページでSMTP2GOのアカウントを取得します。
1ヶ月間の送信メール数が1000メールまでは無料で利用することができます。




このページでは以下を指定します。

Name
何でもいいです。
私は以下の様に名前と苗字のローマ字を指定しました。
TARO YAMADA

Email Address
使用中のプロバイダーのメールアドレスを指定します。
gmailのメールアドレスでもかまいません。
必ず使用中のメールアドレスを指定してください。
このアドレス宛に最終確認のメールが届きます。

Password
上記メールアカウントのパスワードを指定します。

Plan
Free Planを選んでください。

「CREATE ACCOUT」を押すと指定したメールアドレス宛に
「You're almost done. Verify your account now!」
のメールが届きますので、メールの内容に従って「Activate Account」を行うとアカウントの登録完了です。

次にtelnetを使ってメール送信のテストを行います。

まず準備として「Email Address」「Password」で指定した文字を、このページを使ってBase64の文字列に変換しま す。
例えば「Email Address」が「aaa@bbb.ne.jp」の場合、上の欄に「aaa@bbb.ne.jp」を指定して
ENCODEボタンを押すと下の欄に「YWFhQGJiYi5uZS5qcA==」が表示されるのでこれを控えます。(→重要)
「Password」で指定した文字についても同様にBase64の文字列に変換します。(→これも重要)
Base64に変換した文字列はメール送信の際に使いますので、メモ帳などで記録しておいてください。




次にこちらのページに従って telnetを使ってメール送信のテストを行います。

私は RaspberryPi に telnet をインストールしてテストしました。
sudo apt-get install telnet

「334 VXNlcm5hbWU6」に続いて「Email AddressをBase64に変換した文字列」を指定します。
「334 UGFzd4dvcmQ1」に続いて「PasswordをBase64に変換した文字列」を指定します。

「334 VXNlcm5hbWU6」は「Username:」がBase64に変換されて表示されています。
「334 UGFzd4dvcmQ1」は「Password:」がBase64に変換されて表示されています。
このあたりのことはこ ちらに紹介されています。

「mail from: <sender@example.com>」にはメール送信者(自分)のメールアドレス、
「rcpt to: <recipient@example.com>」には送信先のメールアドレス(こちらも自分)を指定します。
本文の終了はピリオドの1文字です。
quitコマンドで自分宛にメールが届いたらテスト完了です。
これで「mail.smtp2go.com」のサーバと2525ポートを使って、テキストベースでメールを送ることができる様になります。

SMTP2GOとよく似たサービスにSendGridが有ります。
SendGridについてはこ ちらこ ちらで紹介されていますが、登録が少し面倒なのと、
届いたメールに購読中止のフッターが勝手に付くようです。

続く....