diadia

興味があることをやってみる。独学で勉強しています。初心者から始めたので困ったことを書いて同じ境遇の方のヒントになればと思います。

django-allauthを使ってメールを送信を絡めてユーザ登録したい

前提

sendgridを使ったユーザー登録を実行

emailを送信するためにはsettings.pyをいじると送れることは知っておくこと。
ここの設定によってemailの送信を例えばgmailから送ったり、sendgridのようなメール配信サービスのAPIを利用して送ったり、またはメールをターミナルに送信して確認することができる。

情報収集

まず本家のドキュメントを見ると,

ACCOUNT_EMAIL_REQUIRED (=False) The user is required to hand over an e-mail address when signing up. ACCOUNT_EMAIL_VERIFICATION (=”optional”) Determines the e-mail verification method during signup – choose one of "mandatory", "optional", or "none". When set to “mandatory” the user is blocked from logging in until the email address is verified. Choose “optional” or “none” to allow logins with an unverified e-mail address. In case of “optional”, the e-mail verification mail is still sent, whereas in case of “none” no e-mail verification mails are sent.

ACCOUNT_EMAIL_REQUIREDをTrueにする事が必要そうだ。
次にACCOUNT_EMAIL_VERIFICATIONには、値としてoptional,mandatory,noneがある。メール受信できたかどうか知りたいのでmandatoryにすれば良いと思われる。

気になること

sendgridを使ってメールを送信するのでユーザー登録時(sign up時)のviews.pyにsend_mail関数を付け加える必要があるのか無いのか?django-allauthのviewsの仕組みを理解する必要がある。

結論

django-allauthにメール送信機能も備え付けてあるため、自分でsend_mail関数を使って送信する必要がない。単純にsettings.pyにmail受信の確認設定さえすれば良い。