今回はPythonを使ってgmail経由で送信したいと思います。
最初に写真撮影を行います。photo.jpgに保存します。
os.system('fswebcam -p YUYV -S 10 photo.jpg')
次に温度の計測ですが、デバイスが不安定で稀に取得に失敗するようなのでリトライをかけています。10回失敗したら諦めます。
ret = 1
count = 0
output = ''
while ret != 0:
ret,output = commands.getstatusoutput('pcsensor')
count+=1
if count > 10:
ret = 0
output = 'failed to get temperature from USB device.'
time.sleep(1)
温度情報はメールのタイトルとBodyにも入れ、写真はメール添付します。
from_addr = 'from@gmail.com'
to_addr = 'to@gmail.com'
title = output
body = 'Hello, \nThis is hourly report mail\n'
body += output
msg = create_message(from_addr, to_addr, title, body, 'utf-8','photo.jpg')
send_gmail(from_addr, to_addr, msg)
メッセージ作成処理は下記のようにやりました。
def create_message(from_addr, to_addr, subject, body, encoding, image_path):
msg = MIMEMultipart()
msg['Subject'] = Header(subject, encoding)
msg['From'] = from_addr
msg['To'] = to_addr
msg['Date'] = formatdate()
body = MIMEText(body, 'plain', encoding)
msg.attach(body)
fp = file('%s' % image_path, 'rb')
img = MIMEImage(fp.read(), 'jpeg', filename='%s' % image_path)
img.add_header("Content-Type", "attachment", filename='%s' % image_path)
fp.close()
msg.attach(img)
return msg
一応gmail送信部分も。
def send_gmail(from_addr, to_addr, msg):
s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.ehlo()
s.login('from@gmail.com', 'password')
s.sendmail(from_addr, [to_addr], msg.as_string())
s.close()
以上でスクリプトは完成です。あとはcronに登録して定期的に実行をしてください。僕は9時〜18時の間に1時間おきに送信しています。
スマートフォンをお使いであればgmailを使うと簡単に確認できます。
0 件のコメント:
コメントを投稿