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」が実行されていなければ内部で実行するという仕様になっているので、なくても送信可能です。もちろん明示的に実行してもかまいません。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 2167, today: 1, yesterday: 0
初版日時: 2017-06-12 (月) 13:09:44
最終更新: 2017-06-12 (月) 14:57:00 (JST) (2471d) by njf
MenuBar
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失

Portuguese | English | German | Greek | Japanese | Korean | Russian | T-Chinese top
NJF