[Django3.0]send_mailでメール送信

ログイン時にユーザ名を忘れたユーザがいたら、メールフォームにemailアドレスを入力してもらって、auth_usersにメールアドレスがあれば、そのメールアドレスにユーザ名を送信したい。パスワードは送信しない。

ログイン画面

メール入力画面

公式ドキュメント: send email

SMTPは開発環境なので、mailtrapを使います。
EMAIL_BACKEND = ‘django.core.mail.backends.console.EmailBackend’とすれば、コマンドラインに表示されます。

settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_HOST = 'smtp.mailtrap.io'
EMAIL_PORT = 587
EMAIL_HOST_USER = '******'
EMAIL_HOST_PASSWORD = '******'
EMAIL_USE_TLS = True

### views.py
auth_userテーブルから、一致するemailがあるか確認し、あれば、そのメールアドレスにusernameを送信する。
送信はsend_mailを使用する。
本文の改行は”\n”

from django.core.mail import send_mail

def username_send(request):
	if(request.method == 'POST'):
		data = User.objects.filter(email=request.POST['email']).first()
		if data is not None:
			subject = "【Hanai】ユーザ名のお知らせ"
			message = 'お問い合わせありがとうございます。\nログインに必要なユーザ名をお知らせします。\n\nユーザ名:' + data.username + '\n\n\n※本メールは販売管理システムの\n送信専用のメールアドレスから自動送信されています。\nご返信いただいても返信できませんのでご了承ください。\n本サービスに心上がりがない場合など、お問い合わせください。\n\nHanbai'
			from_email = 'master@hanbai.com'
			recipient_list = [ data.email ]
			send_mail(subject, message, from_email, recipient_list) 
		else:
			params = {
				'message': 'メールアドレスの登録がありません。'
			}
			return render(request, 'sales/username_forget.html', params)
	return render(request, 'sales/username_send.html')

メール受信

OK! 大分来た
さあ、この調子で続けてラズパイとopenCVやります。