Ad

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)」の"xxx.jp"はSMTPのサーバー名で、「587」はポート番号です。 通常この番号が使われますが、サーバーによって変わる場合があります。

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

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

Pythonでのメールの送信をネットで検索すると、「starttls」の前後で「ehlo」を実行しているサンプルコードよく見かけます。「ehlo」はサーバーとクライアントの機能の情報を交換するもので、主要なコマンドの前に実行すべきものです。しかし、実際には「starttls」や「login」メソッドでは、もし「ehlo」が実行されていなければ内部で実行するという仕様になっているので、なくても送信可能です。もちろん明示的に実行してもかまいません。


Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 677, today: 1, yesterday: 1
Princeps date: 2017-06-12 (Mon) 13:09:44
Last-modified: 2017-06-12 (Mon) 14:57:00 (JST) (676d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF