Rapberry Pi は、いわゆるIoT機器としての代表格です。
インターネットに簡単に接続できます。
ということは、Eメールを送れると、使い道が一気に広がります。
・人感センサーに何かが反応したら写真を撮影、メールに添付して送る
・温度センサーが異常な数値を示したらメールでお知らせ
・玄関に置いておいて、子供が帰ったらスイッチボタンを押すようにルールを決めたら、メールでお知らせ
今回は、ごくごく単純に、件名と本文だけのメールを送信する方法です。
画像ファイルの添付とか、あまり欲張らずに、テキストだけです。
なお、インターネットへの接続は必須です。
有線LAN、Wifiによる無線など、方法はなんでもOK。
1. メールアドレスの準備
メールを送る先のメールアドレスはもちろんですが、その特性上、
・宛先メールアドレス
・送り元(要するに、自分)のメールアドレス
・送り元の送信メールサーバー(SMTPサーバー)
が必要です。
宛先はともかく、簡単にメールアドレスを取得できる方法としてGmail(Google)が便利でしたが、いろいろとセキュリティ対策が取られるようになり、
プログラムから送り元として使うのは難しくなりました。
これらについては自前でSMTPサーバーを建てるなどの方法があると思いますが、今回はそこまでは立ち入りません。
2. Pythonプログラミング
下記プログラム中の、
・自分のメールアドレス
・自分のメールサーバーへのパスワード
・自分のメールアドレスのSMTPサーバー名
・送信先メールアドレス
・件名、本文
は、適宜書き換えてください。
このままでは動きません。
# -*- coding: utf-8 -*- # 日本語コメントをエラーとしないように、UTF-8で保存 # 使用するライブラリのインポート import smtplib from email.mime.text import MIMEText from email.utils import formatdate # 定数の定義 SELF_MAIL_ADDRESS = '*****@*****' # 自分のメールアドレス SELF_MAIL_PASSWORD = '*****' # 自分のメールサーバーへのパスワード SELF_SMTP_SERVER = '***.**.*.' # 自分のメールアドレスのSMTPサーバー名 SELF_SMTP_PORT = 587 # SMTPサーバーのポート番号(おそらくは、このままでOK) def create_mail(mail_subject, mail_from, mail_to): """ 送信メールを生成、返却 """ mail_message = MIMEText(mail_body) mail_message['Subject'] = mail_subject mail_message['From'] = mail_from mail_message['To'] = mail_to mail_message['Date'] = formatdate() # デバッグ用に送信メールの内容を出力 print(mail_message) return mail_message def send_mail(mail_message): """ メールを送信する """ smtp = smtplib.SMTP(SELF_SMTP_SERVER, SELF_SMTP_PORT) smtp.ehlo() smtp.starttls() smtp.ehlo() smtp.login(SELF_MAIL_ADDRESS, SELF_MAIL_PASSWORD) smtp.sendmail(SELF_MAIL_ADDRESS, mail_to, mail_message.as_string()) smtp.close() # 継承した場合など、実行されないようにする(現状、意味は特にない) if __name__ == "__main__": # メールの内容 # 送信先メールアドレス mail_to = "***@***" # メールの件名 mail_subject = "件名テスト" # メールの本文 mail_body = "本文テスト" # 送信メールを作成する mail_message = create_mail(mail_subject, SELF_MAIL_ADDRESS, mail_to) # メールを送信する send_mail(mail_message)