簡體   English   中英

Django send_mail返回SMTPConnectError

[英]Django send_mail returns SMTPConnectError

我正在嘗試使用Django send_email,smtp和gmail發送電子郵件。 但是,代碼返回SMTPConnectError(-1,b“)

我的settings.py文件:

ALLOWED_HOSTS = []
DEFAULT_FROM_EMAIL = 'mygmailid'
SERVER_EMAIL = 'mygmailid'
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'mygmailid'
EMAIL_HOST_PASSWORD = 'myPassword'
EMAIL_PORT = 587

我的views.py文件:

from django.http import HttpResponse
from django.core.mail import send_mail
from smtplib import SMTPConnectError
#rest of the code in between
....
try:
   send_mail('testmail', 'test content', settings.EMAIL_HOST_USER, ['arkaghosh024@gmail.com', fail_silently=False])
except SMTPConnectError as e:
   return HttpResponse(e)

追溯:

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python34\lib\site-packages\django-1.8.2-  py3.4.egg\django\core\mail\__
init__.py", line 62, in send_mail
return mail.send()
File "C:\Python34\lib\site-packages\django-1.8.2- py3.4.egg\django\core\mail\me
ssage.py", line 303, in send
return self.get_connection(fail_silently).send_messages([self])
File "C:\Python34\lib\site-packages\django-1.8.2-py3.4.egg\django\core\mail\ba
ckends\smtp.py", line 100, in send_messages
new_conn_created = self.open()
File "C:\Python34\lib\site-packages\django-1.8.2-py3.4.egg\django\core\mail\ba
ckends\smtp.py", line 58, in open
self.connection = connection_class(self.host, self.port, **connection_params
)
File "C:\Python34\lib\smtplib.py", line 244, in __init__
raise SMTPConnectError(code, msg)
smtplib.SMTPConnectError: (-1, b")

當我將EMAIL_BACKEND更改為:

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

它工作正常。 此外,當我使用虛擬后端時,它不會顯示錯誤。

我嘗試過使用SSL代替TLS,允許gmail中安全性較低的應用程序,關閉防火牆,還嘗試了其他與通過django發送電子郵件相關的stackoverflow帖子,但沒有任何效果。 我不知道錯誤是什么。 請幫我。 提前致謝。

Gmail帳戶需要這樣:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'your-username@gmail.com'
EMAIL_HOST_PASSWORD = 'your-password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
  1. 然后測試其作品:

python manage.py shell

from django.core.mail import send_mail
send_mail('testEmail', 'hi', 'Youremail@email.com', ['Emailtest@email.com'])

如果您沒有使用Gmail帳戶但仍然遇到問題,那么只需嘗試將EMAIL_HOST_USER和EMAIL_HOST_PASSWORD添加到您擁有的內容中即可。 如果您仍有問題,可能是您的網絡阻止了您。 操作系統或路由器上的防火牆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM