Matthewの備忘録

忘れたときはここを見ろ。何か書いてある。

昆布乾燥室温湿度モニタリングシステム その8

 昨日は MTA ssmtp によるメール送信機能を使用可能にしたが、実は Python または Ruby などを使って同様にメールが送信できる。今回は Python 2.7.9 を利用したメール送信デモンストレーションを書いてみた。参考にした「Raspberry pi 3とArduinoの連携によるハリネズミ温度管理システムの改良Ver1.1 」では一部のプロバイダーやウェブ上のメールビューワーで文字化けするので改良した。次回以降で温度計測と組み合わせるつもりだ。

プログラム

# -*- coding: utf-8 -*-
import serial
import time
import os.path
import datetime
import smtplib
from email import Encoders
from email.Utils import formatdate
from email.MIMEBase import MIMEBase
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.header import Header
from email import charset

#Google account
ADDRESS = "ここにアカウントのメールアドレス"
PASSWARD = "ここにアカウントのパスワード"

#SMTP Server
SMTP = "smtp.gmail.com"
PORT = 587
CSET = "utf-8"

def create_message(from_addr, to_addr, subject, body):
    msg = MIMEMultipart()
    msg["From"] = from_addr
    msg["To"] = to_addr
    msg["Date"] = formatdate()
    msg["Subject"] = Header(subject, CSET)
    body = MIMEText(body, "plain", CSET)
    msg.attach(body)
    return msg 

def send(from_addr, to_addrs, msg):
    smtpobj = smtplib.SMTP(SMTP, PORT)
    smtpobj.ehlo()
    smtpobj.starttls()
    smtpobj.ehlo()
    smtpobj.login(ADDRESS, PASSWARD)
    smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
    smtpobj.close()

if __name__ == '__main__':

#adress
    to_addr = "送り先のメールアドレス"

#subject and body
    subject = "温度警告"
    body = "現在の温度 " + "40" + "度以下です。\n至急昆布乾燥室に急行して下さい。"

#create message
    msg = create_message(ADDRESS, to_addr, subject, body)

#send
    send(ADDRESS, [to_addr], msg)

    print('send aleart message.\n')