djangoでメール送信をしようとした際に出たエラーでの質問です。
WindowsのVscodeを利用してます。
python manage.py runserver後、管理者でログインし、アカウントを作る際に氏名、メールアドレス、学年などを記入後に確定ボタンを押下した後5~10秒以内に
ConnectionRefusedError: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。
このように表示されます。データベースにはアカウントとパスワードは保存されていますが、実在するGmailには送信できませんでした。
問題としてWindowsの設定の問題かsetting.pyが間違っていると考えております。
どなたか解決策教えて頂けると大変参考になります。
コマンドプロンプト上ではパスワードの自動生成をできており、ログインもできます。前前前~までは表示されております。
その為、send_mailが動いてないと考えています。()
views.py
1 2from email import message 3from django.shortcuts import render 4from django.views import generic 5from django.contrib import messages 6from django.urls import reverse_lazy,reverse 7from django.http import HttpResponseRedirect 8from accounts.models import * 9from task.models import * 10from .forms import * 11from django.http import HttpResponse 12from django.core.mail import send_mail 13 14import random,string 15 16# ユーザー登録view 17class UserCreateView(generic.CreateView): 18 model = CustomUser 19 template_name = "user_create.html" 20 form_class = UserCreateForm 21 success_url = reverse_lazy('task:user_list') 22 23 24 25 26 def send_Email(self,request): 27 """題名""" 28 subject = "題名" 29 """本文""" 30 message = "本文です\nこんにちは。メールを送信しました" 31 """送信元メールアドレス""" 32 from_email = "totoyamiti0112@gmail.com" 33 """宛先メールアドレス""" 34 recipient_list = [ 35 'totoyamiti0112@gmail.com' 36 ] 37 print("前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前前") 38 send_mail(subject, message, from_email, recipient_list) 39 print("後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後後") 40 return HttpResponse('<h1>email send complete</h1>') 41 42 def form_valid(self,form): 43 obj = form.save(commit=False) 44 # 作成時に紐づける 45 obj.user_school = self.request.user.user_school 46 47 # ランダム文字列生成 48 randlst = [random.choice(string.ascii_letters + string.digits) for i in range(10)] 49 random_string = ''.join(randlst) 50 print("************************") 51 print(random_string) 52 print("************************") 53 obj.set_password(random_string) 54 55 obj.save() 56 57 messages.success(self.request,'ユーザーを作成しました。') 58 self.send_Email(self.request) 59 return super().form_valid(form) 60 61 def form_invalid(self,form): 62 messages.error(self.request,'失敗しました。') 63 return super().form_invalid(form) 64
setting.py
1コード 2 3 4INSTALLED_APPS = [ 5 'django.contrib.admin', 6 'django.contrib.auth', 7 'django.contrib.contenttypes', 8 'django.contrib.sessions', 9 'django.contrib.messages', 10 'django.contrib.staticfiles', 11 12 # taskアプリケーション 13 'task.apps.TaskConfig', 14 15 # accountsアプリケーション 16 'accounts.apps.AccountsConfig', 17 18 # allauth 19 'django.contrib.sites', 20 'allauth', 21 'allauth.account', 22] 23 24DATABASES = { 25 'default': { 26 'ENGINE': 'django.db.backends.postgresql_psycopg2', 27 'NAME': 'amsg', 28 'USER': 'postgres', 29 'PASSWORD': 'postgres', 30 'HOST': 'localhost', 31 'PORT': '5432', 32 } 33} 34 35AUTH_USER_MODEL = 'accounts.CustomUser' 36 37 38# django-allauth で利用するdjango.contrib.sitesを使うためにサイト識別用IDを設定 39SITE_ID = 1 40 41AUTHENTICATION_BACKENDS = ( 42 'allauth.account.auth_backends.AuthenticationBackend', 43 # 一般ユーザー用(メールアドレス認証) 44 'django.contrib.auth.backends.ModelBackend', 45 # 管理サイト用(ユーザー名認証) 46) 47 48# メールアドレス認証に変更する設定 49ACCOUNT_AUTHENTICATION_METHOD = 'email' 50ACCOUNT_USERNAME_REQUIRED = False 51 52# サインアップにメールアドレス確認を挟むように設定 53ACCOUNT_EMAIL_VERIFICATION = 'mandatory' 54ACCOUNT_EMAIL_REQUIRED = True 55 56# ログイン/ログアウト後の遷移先を設定 57#LOGIN_REDIRECT_URL = 'diary:diary_list' 58LOGIN_REDIRECT_URL = 'task:toppage' 59ACCOUNT_LOGOUT_REDIRECT_URL = 'account_login' 60 61# ログアウトリンクのクリック一発でログアウトする設定 62ACCOUNT_LOGOUT_ON_GET = True 63 64# django-allauthが送信するメールの件名に自動付与される接頭辞をブランクにする設定 65ACCOUNT_EMAIL_SUBJECT_PREFIX = '' 66 67# デフォルトのメール送信先を設定 68DEFAULT_FROM_EMAIL = 'totoyamiti0112@gmail.com' 69 70 71STATICFILES_DIRS = ( 72 os.path.join(BASE_DIR,'static'), 73) 74 75EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 76# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 77 78EMAIL_HOST = 'localhost' 79EMAIL_PORT = 587 80EMAIL_HOST_USER = 'totoyamiti0112@gmail.com' 81EMAIL_HOST_PASSWORD = 'bpwjwocxyyjgvjta' 82EMAIL_USE_TLS = True`