ラズパイからGメールを送りましょう。
<参考「爺メール」>
今回の内容はこちらのサイトを参考というかほぼコピペなんだけど、
日本語文字化け対策とimportして他のpythonプログラムから利用出来るようにした。
-- gmail.py --
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Gmailで簡単にメール送信
"""
import atexit
import sys
import os.path
import datetime
import smtplib
import threading
from email import Encoders
from email.Utils import formatdate
from email.MIMEBase import MIMEBase
from email.Header import Header
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
#Gmailアカウント
ADDRESS = "(所持しているアドレス)@gmail.com"
PASSWARD = "(パスワード)"
PORT = 587
class SendMail():
def __init__(self,add,sub,body):
self.add = add
self.sub = sub
self.body = body
self.thread = threading.Thread(target = self.send)
self.thread.start()
def create_message(self, from_addr, to_addr, subject, body, mime=None, attach_file=None):
"""
メッセージを作成する
@:param from_addr 差出人
@:param to_addr 宛先
@:param subject 件名
@:param body 本文
@:param attach_file 添付ファイル
@:return メッセージ
"""
msg = MIMEMultipart()
msg["From"] = from_addr
msg["To"] = to_addr
msg["Date"] = formatdate()
msg["Subject"] = Header(subject, "utf-8")
body = MIMEText(body,"plain","utf-8")
msg.attach(body)
# 添付ファイル
#if mime != None and attach_file != None:
# attachment = MIMEBase(mime['type'],mime['subtype'])
# file = open(attach_file['path'])
# attachment.set_payload(file.read())
# file.close()
# Encoders.encode_base64(attachment)
# msg.attach(attachment)
# attachment.add_header("Content-Disposition","attachment", filename=attach_file['name'])
return msg
def send_gmail(self, from_addr, to_addrs, msg):
"""
メールを送信する
@:param from_addr 差出人
@:param to_addr 宛先(list)
@:param 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()
def send(self):
msg = self.create_message(ADDRESS, self.add, self.sub, self.body)
self.send_gmail(ADDRESS, [self.add], msg)
def send(add, sub, body):
SendMail(add, sub, body)
if __name__ == '__main__':
argv = sys.argv
argc = len(argv)#引数の数取得
if argc < 4:
print "args =[Address],[subject],[body]"
else:
send(argv[1], argv[2], argv[3])
--- 利用方法 ---
#Gmailアカウント
ADDRESS = "(所持しているアドレス)@gmail.com"
PASSWARD = "(パスワード)"
の部分を所持している物に書き換える
例
ADDRESS = "raspberrypi@gmail.com"
PASSWARD = "raspberrypw"
コマンドライン利用するには第1引数に送信先アドレス、第二引数にタイトル、第三引数に内容を入れる
例
pythonから使うにはimportして.send()で値を渡す。
例
import gmail
gmail.send("aiteaddress","タイトル","内容")
しかしこれで送信してもエラーが出る。
Google様が安全性の低いセキュリティー認証として受け付けてくれない。「ログインとセキュリティ」設定から安全性の低いアプリの許可を有効にする必要がある。
安全性の低い認証方法なのでプライベートで使うGmailとは別にRaspberryPi用のアドレスを用意する方が良さそうです。
このGmail送信コードを僕はこのような用途で使っています↓
dreamerdream.hateblo.jp
dreamerdream.hateblo.jp