home changes contents help options

404:SMTPメールを送る

日本語の取り扱いについては、こちらの解説とサンプルが一番わかりやすい。サイトが消えてしまったのでgithubのそれに張り替える。

Pythonでメールを送信したい人のためのサンプル集

日本語を含んだメール

emailパッケージのデフォルトの文字セットは'us-ascii'なので、 日本語を含んだメールを送信する場合は、明示的に指定する必要があります。

plain/textのMIME文書の場合は、MIMETextオブジェクトのコンストラクタで文字セットを指定するのが一番簡単です。 それに加えて、メールのヘッダーは、email.HeaderのHeaderオブジェクトを使って国際化しなくてはなりません。

# -- coding: utf-8 --
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate

def send(from_addr, to_addr, msg): # SMTPの引数を省略した場合はlocalhost:25 s = smtplib.SMTP() s.sendmail(from_addr, [to_addr], msg.as_string()) s.close()

def create_message2(from_addr, to_addr, subject, body, encoding): # 'text/plain; charset="encoding"'というMIME文書を作ります msg = MIMEText(body, plain, encoding) msg['Subject'] = Header(subject, encoding) msg['From'] = from_addr msg['To'] = to_addr msg['Date'] = formatdate() return msg

if __name__ == '__main__': from_addr = spam@example.com to_addr = egg@example.com msg = create_message2(from_addr, to_addr, u'テスト', u'本文', ISO-2022-JP) send(from_addr, to_addr, msg)

Pythonで日本語メールを送る方法をいろいろ試した

こちらにあった例。リンクの張り方がわからないので、コピーさせていただいた。動作は未確認。

http://www.bigbold.com/snippets/tag/python/2

python : send a mail (text), with attachments

 import smtplib
 from email.MIMEMultipart import MIMEMultipart
 from email.MIMEBase import MIMEBase
 from email.MIMEText import MIMEText
 from email.Utils import COMMASPACE, formatdate
 from email import Encoders
 import os

 def sendMail(to, subject, text, files=[],server="localhost"):
     assert type(to)==list
     assert type(files)==list
     fro = "Expediteur <expediteur@mail.com>"

     msg = MIMEMultipart()
     msg['From'] = fro
     msg['To'] = COMMASPACE.join(to)
     msg['Date'] = formatdate(localtime=True)
     msg['Subject'] = subject

     msg.attach( MIMEText(text) )

     for file in files:
         part = MIMEBase('application', "octet-stream")
         part.set_payload( open(file,"rb").read() )
         Encoders.encode_base64(part)
         part.add_header('Content-Disposition', 'attachment; filename="%s"'
                        % os.path.basename(file))
         msg.attach(part)

     smtp = smtplib.SMTP(server)
     smtp.sendmail(fro, to, msg.as_string() )
     smtp.close() 

 sendMail(
         ["destination@dest.kio"],
         "hello","cheers",
         ["photo.jpg","memo.sxw"]
     )