[英]Django send_mail SMTPSenderRefused 530 with gmail
我一直在嘗試能夠從我正在開發的網站接收帶有 Django 的電子郵件。 現在還沒部署,我用的是django開發服務器,不知道有沒有影響。
這是我的 settings.py 配置:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'my_email@gmail.com'
EMAIL_HOST_PASSWROD = 'my_password'
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
DEFAULT_TO_EMAIL = EMAIL_HOST_USER
然后,通過項目的根文件夾我運行python manage.py shell
,並鍵入以下內容:
>>> import django
>>> from django.conf import settings
>>> from django.core.mail import send_mail
>>> send_mail('test', 'test', settings.EMAIL_HOST_USER, [settings.EMAIL_HOST_USER], fail_silently=False)
我收到的是以下錯誤:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/paulo/anaconda3/envs/MyDjangoEnv/lib/python3.6/site-packages/django/core/mail/__init__.py", line 62, in send_mail
return mail.send()
File "/home/paulo/anaconda3/envs/MyDjangoEnv/lib/python3.6/site-packages/django/core/mail/message.py", line 348, in send
return self.get_connection(fail_silently).send_messages([self])
File "/home/paulo/anaconda3/envs/MyDjangoEnv/lib/python3.6/site-packages/django/core/mail/backends/smtp.py", line 111, in send_messages
sent = self._send(message)
File "/home/paulo/anaconda3/envs/MyDjangoEnv/lib/python3.6/site-packages/django/core/mail/backends/smtp.py", line 127, in _send
self.connection.sendmail(from_email, recipients, message.as_bytes(linesep='\r\n'))
File "/home/paulo/anaconda3/envs/MyDjangoEnv/lib/python3.6/smtplib.py", line 866, in sendmail
raise SMTPSenderRefused(code, resp, from_addr)
smtplib.SMTPSenderRefused: (530, b'5.5.1 Authentication Required. Learn more at\n5.5.1 https://support.google.com/mail/?p=WantAuthErrorv11sm8729581qkl.88 - gsmtp', 'my_email@gmail.com')
我啟用了允許安全性較低的應用程序的選項。
在使用兩步驗證時,我嘗試輸入谷歌提供的 EMAIL_HOST_PASSWORD = 'myapplicationpassword' 而不是 EMAIL_HOST_PASSWORD = "my_password"。 它沒有用。
然后我禁用了兩步驗證並將應用程序密碼更改回我的實際密碼,錯誤仍然存在。
我做錯了什么嗎? 谷歌是否以某種方式阻止了這些類型的應用程序? 如果我運行自己的郵件服務器,我會做得更好嗎?
確保您執行以下兩項操作:
確保導入的設置或密碼設置和/或檢索在同一個終端外殼中:
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASSWORD') export EMAIL_PASSWORD="xxxx xxxx xxxx xxxx"
我試圖編輯 bash_profile、bashrc、zshrc、profile 等,但沒有任何效果。 如果變量返回“無”,請嘗試以下操作:
如此鏈接中所述, python-dotenv創建一個 .env 文件(最好在項目的根目錄中)並將您的憑據放入其中。 然后在settings.py(如果你使用django)中,使用以下代碼:
from pathlib import Path
from dotenv import load_dotenv
env_path = Path('Path to the .env file')
load_dotenv(dotenv_path=env_path)
然后使用以下代碼訪問變量,你應該沒問題:
os.environ.get('var_name')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.