Python2.7でGMailから日本語メールを送信する

以前使っていたスクリプトを紛失してしまったので、ざっと書き直してこっちにもメモ。

gist

#! /usr/bin/python2.7
# coding: utf-8
 
"""
stdinの内容をGMailで
自分自身に送る
"""
 
import smtplib
 
host, port = 'smtp.gmail.com', 465
username, password = 'XXXXXXXXXXXXXXXXXXXXX@gmail.com', 'YYYYYYYYYYYYYYYYYYYYY'
 
import sys
import os
 
content = sys.stdin.read()
 
 
# unicodization
for enc in ['utf-8', 'cp932', 'euc-jp']:
    try:
        content = unicode(content, enc)
    except: pass
 
subject = content.splitlines()[0].strip()
body = content
 
# build mail message
message = u"""From: %s
To: %s
Subject: %s

%s
""" % (username, username, subject, body)
 
# normalize newline character to CRLF
message = message.replace('\r\n', '\n')
message = message.replace('\r', '\n')
message = message.replace('\n', '\r\n')
 
message = message.encode('utf-8')
 
smtp = smtplib.SMTP_SSL(host, port)
smtp.ehlo()
smtp.login(username, password)
smtp.sendmail(username, username, message)
smtp.quit()