先日Djangoを学び始め、ユーザー登録機能の実装にtryしています。
Djangoで、メールを送信←概ねこちらの記事に則ってプログラムを書いています。
何度かエラーが出てしまったので、備忘録として残します。
TemplateDoesNotExist
最初に直面したのが上記のエラーでした。
ユーザー登録時に送信されるメールのタイトル・本文のテンプレートが見つからず、エラーになってしまいました。
下記の通りディレクトリを修正したところ解決しました。
mail_templatesフォルダもtemplatesの中に入れておかなければならなかったようです。
×修正前
users(アプリ名)
├mail_templates
| └create
| └subject.txt(メールタイトルのテンプレート)
└templates
〇修正後
users
└templates
└mail_templates
└create
└subject.txt(メールタイトルのテンプレート)
[WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。
拒否されてしまいました。
これは私のGmailから登録者へメールしようとしたにもかかわらず、プログラム中にGmailのユーザ名、パスワード等を書いていなかったのが原因でした。
settings.pyに下記の通り加筆したら解決しました。
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'メアド'
EMAIL_HOST_PASSWORD = 'パスワード'
EMAIL_USE_TLS = True
SMTPAuthenticationError at /user_create/
続いては上記のエラーが生じるとともに、本プログラムで送信元として使用予定だったGmailから「誰かが不正ログインしようとしています」の注意喚起メールが届きました。
これはエラーに表示されていたGoogleのアドレスに飛び、安全性の低いアプリへのアクセスを有効にすることで解決しました。(安全性のしょぼいアプリでごめんね…)
BadHeaderError
使用していたAtomでファイル末尾に自動で改行が挿入されてしまうため、「改行できないsubject.txtが二行になっているよ!困った!」とエラーが発生してしまいました。
下記サイトを参考に、自動で改行する機能をストップして解決しました。
【Atom】ファイル末尾に自動改行させない設定
以上を解決したら無事にDjangoアプリを利用してメールを送信できました!わーい!