Python2/3でgmailからメールを送信する(gmailライブラリ使用編)
エントリPython2.7でGMailから日本語メールを送信するではテキストメールを送れるスクリプトを書きましたが、HTMLメールだとか添付ファイルはつけられないので、すぐに不満がでてくると思います。というか出てきました。手元では都度少しづつ改造して使っていますが、ライブラリを使うのが効率が良いと思います。
ということで、PyPIを"gmail"で検索して一番に出てくるライブラリを使ってみました。gmailという名前です。直球ですね。
インストール方法
pip install gmail
テキストメールを送信する
#! /usr/bin/python2.7 # coding: utf-8 import gmail import os username = 'XXXXX@gmail.com' password = 'XXXXXXXXXXXXXXX' client = gmail.GMail(username, password) message = gmail.Message(u'サブジェクト:こんにちわ世界', to=username, text=u'ボディ:これはテストメッセージです') client.send(message) client.close()
HTMLメールを送信する
#! /usr/bin/python2.7 # coding: utf-8 import gmail import os username = 'XXXXX@gmail.com' password = 'XXXXXXXXXXXXXXX' client = gmail.GMail(username, password) body_html = u"""<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>テストメッセージ</title> </head> <body> <h1>ほげ!</h1> </body> </html> """ message = gmail.Message(u'サブジェクト:こんにちわ世界', to=username, html=body_html) client.send(message) client.close()
HTMLメールを添付ファイル付きで送信する
#! /usr/bin/python2.7 # coding: utf-8 import gmail import os username = 'XXXXX@gmail.com' password = 'XXXXXXXXXXXXXXX' client = gmail.GMail(username, password) body_html = u"""<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>テストメッセージ</title> </head> <body> <h1>ほげ!</h1> </body> </html> """ message = gmail.Message(u'サブジェクト:こんにちわ世界', to=username, html=body_html, attachments=[u'c:/temp/無題2.png']) client.send(message) client.close()
コマンドラインからメール送信
cliツールも提供されています。 -m gmail.cli で使用可能。
> python -m gmail.cli --help usage: cli.py [-h] --username USERNAME [--password PASSWORD] --to TO [--cc CC] --subject SUBJECT [--body BODY] [--html HTML] [--attachment ATTACHMENT] [--debug] Send email message via GMail account optional arguments: -h, --help show this help message and exit --username USERNAME, -u USERNAME GMail Username --password PASSWORD, -p PASSWORD GMail Password --to TO, -t TO To (multiple allowed) --cc CC, -c CC Cc (multiple allowed) --subject SUBJECT, -s SUBJECT Subject --body BODY, -b BODY Message Body (text) --html HTML, -l HTML Message Body (html) --attachment ATTACHMENT, -a ATTACHMENT Attachment (multiple allowed) --debug, -d Debug
>python -m gmail.cli ^ --username %GMAIL_USERNAME% ^ --password %GMAIL_PASSWORD% ^ --to=%GMAIL_USERNAME% ^ --subject こんにちわサブジェクト ^ --html "<html><body><h1>foobarbaz</h1></body></html>" ^ --attachment c:\temp\xx.png
Python2.7で添付ファイルのパス文字列に日本語を含んだらUnicodeDecodeErrorで失敗した。Python3.6だと成功。バグかな?
やっぱり自分で書いた方が安心感あるかもしれない…