|
1: 2017-06-12 (月) 13:09:44 njf |
| + | 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」が実行されていなければ実行するという仕様になっているので、なくても送信可能です。 |
Counter: 2311,
today: 2,
yesterday: 0