ページへ戻る

− Links

 印刷 

Python​/メールの送信 のバックアップソース(No.1) :: NJF Wiki

xpwiki:Python/メールの送信 のバックアップソース(No.1)

  Next »[5]
Python2.x系でメールの送信を行うには、以下のようにsmtplibを使います。
また、emailライブラリを使ってヘッダーの作成や日本語のエンコードを行います。

 # -*- coding: utf-8 -*-

 import smtplib
 from email.MIMEText import MIMEText
 from email.Header import Header
 from email.Utils import formatdate

 from_address = 'fromadress@xxx.jp'
 to_address   = 'toaddress@xxx.jp'

 charset = 'ISO-2022-JP'
 subject = u'テスト'
 text    = u'テストです'

 msg = MIMEText(text.encode(charset), 'plain', charset)
 msg['Subject'] = Header(subject, charset)
 msg['From'] = from_address
 msg['To'] = to_address
 msg['Date'] = formatdate(localtime=True)

 smtp = smtplib.SMTP('xxx.jp',587)
 smtp.starttls()
 smtp.login("yourid","yourpassword")
 smtp.sendmail(from_address, to_address, msg.as_string())
 smtp.close()

「 smtplib.SMTP('xxx.jp',587)」の部分の「587」はポート番号です。
通常この番号が使われますが、サーバーによって変わる場合があります。

「starttls」は暗号化通信を始めるメソッドで、「login」はサーバーへのログインを行います。

古いシステムではメールの送信にログインや暗号化が必要ない場合もありますが、現在では迷惑メールの送信に利用されたりしないように、これらは必須となっています。

Pythonでのメールの送信をネットで検索すると、「starttls」の前後で「ehlo」を実行しているサンプルコードよく見かけますが、実際には「starttls」や「login」メソッドでは、もし「ehlo」が実行されていなければ実行するという仕様になっているので、なくても送信可能です。


  Next »[5]