1: 2017-06-12 (月) 13:09:44 njf[5] [6] [7] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | 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」が実行されていなければ実行するという仕様になっているので、なくても送信可能です。 |
(This host) = https://njf.jp