smtplib でメール出そうとしたらエラー出た件
環境: windows XP sp3, python 2.5.1
いつもお世話になってますな「こちら」を参考にコード書いたんですが、encoding 周りでエラーとか出て、うまく行きませんでした。そんなわけであちこちぐぐってさまよった結果、以下のようなコードで、なんとか回避しましたよ、とメモ。
import smtplib from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate def create_message( from_addr, to_addr, subject, body, encoding='iso-2022-jp' ): """ creates MIMEText object """ msg = MIMEText(body.encode(encoding), 'plain', encoding ) msg['Subject'] = Header(subject.encode(encoding), charset=encoding, header_name = 'Subject' ) msg['From'] = from_addr msg['To'] = to_addr msg['Date'] = formatdate() return msg def send( from_addr, to_addr, msg ): """ send message using SMTP """ s = smtplib.SMTP('smtpserver@fraud.jp',25) s.sendmail( from_addr, [to_addr], msg.as_string()) s.close() main(): from_addr = 'oreore@fraud.jp' to_addr = 'easytarget@somewhere.jp' subj = u"お得な情報" buf = u""" 今あなただけに秘密でお得な情報を お知らせします。""" subj = subj + unicode(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) msg = create_message( from_addr, to_addr, subj, buf ) send( from_addr, to_addr, msg )
分かると思いますが、このスクリプトは認証を使わないサーバーへの接続用です。認証があったり、携帯向けに顔文字を使ったりする場合のスクリプトは、やっぱこちらが参考になりますよ。