web2py version: 1.99.4

2.2.3. SMTP 認証

メール送信に使用する SMTPサーバの認証を利用した認証方式です。

Note

SMTPサーバとは、メールを送信するための SMTPプロトコルに対応した、メール送信用サーバのことです。

設定

設定前に アクセス制御の基本的な設定 を完了しておく必要があります。また 各認証方式での挙動の違い も参照下さい。
モデル定義(db.pyなど)にて、 login_methods リスト値に email_auth() 関数を追加するか置き換えます。

認証方式を追加した例(Gmailサーバを使った認証)

from gluon.contrib.login_methods.email_auth import email_auth
auth.settings.login_methods.append(email_auth("smtp.gmail.com:587", "@gmail.com"))

ドメインによって認証先を切り替えることが可能です。使用例を参照下さい。

Form認証が有効時の挙動について
最初のログイン時、ユーザ情報と共にパスワードが保存されます。 このパスワードを web2pyの画面で変更します。すると、どちらのパスワードを使ってもログイン可能になります。 これはweb2pyで保持するパスワードで、Form認証が通りるためです。 このような挙動に問題がある場合は、Form認証を無効にするか、 login_methods での認証方式の順序を変更してください。 詳細は 認証方式の問い合わせ順とユーザ情報登録 を参照ください。

認証用関数

認証用関数のパラメータについて説明します。

email_auth.email_auth([server="smtp.gmail.com:587", domain="@gmail.com", tls_mode=None])
server
SMTPサーバを指定します。コロン(:)記号と一緒にポート番号も指定します。 デフォルト値は Gmailサーバです(smtp.gmail.com:587)。
dmain
メールアドレスのドメインを指定します。 デフォルト値は Gmailドメインです(@gmail.com)。
tls_mode
tls(ssl) で接続する場合に指定します。デフォルトは None です。 何か値を指定(例えば True など)すると、ポート番号は 587に強制変更になります。

使用例

Gmail と Hotmailを認証サーバとして利用する設定

from gluon.contrib.login_methods.email_auth import email_auth
auth.settings.login_methods.append(email_auth("smtp.gmail.com:587", "@gmail.com"))
auth.settings.login_methods.append(email_auth("smtp.live.com:587", "@hotmail.co.jp"))
auth.settings.login_methods.append(email_auth("smtp.live.com:587", "@live.jp"))

Form認証を無効にした設定

from gluon.contrib.login_methods.email_auth import email_auth
auth.settings.login_methods = [email_auth("smtp.gmail.com:587", "@gmail.com")]
auth.settings.login_methods.append(email_auth("smtp.live.com:587", "@hotmail.co.jp"))
auth.settings.login_methods.append(email_auth("smtp.live.com:587", "@live.jp"))

この設定ではドメインによって、次のように認証先が切り替わります。

ドメイン 認証用SMTPサーバ
@gmail.com GmailのSMTPサーバ
@hotmail.co.jp HotmailのSMTPサーバ
@live.jp HotmailのSMTPサーバ