【问题标题】:ConnectionRefusedError while sending email through gmail using Django使用 Django 通过 gmail 发送电子邮件时出现 ConnectionRefusedError
【发布时间】:2021-05-27 21:15:02
【问题描述】:

我正在尝试通过我的 Gmail 帐户为我的 Django 应用程序发送电子邮件。我在 settings.py 文件中使用以下配置。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST_USER = 'username@gmail.com'
EMAIL_HOST = 'smtp.gmail.com' # tried smtp-relay.gmail.com also
EMAIL_PORT = '587'
EMAIL_USE_TLS = True
EMAIL_HOST_PASSWORD = 'Gmail password / app password' 

这方面的导入声明:

from django.core.mail import send_mail, EmailMessage
from django.conf import settings

以下是我的观点功能:

    message = EmailMessage(subject=email_subject, body=email_message, from_email=settings.EMAIL_HOST_USER,  to=[email, 'username@gmail.com'])
    message.send(fail_silently=False)

我也试过这个:

send_mail(email_subject, email_message , settings.EMAIL_HOST_USER, [email, 'username@gmail.com'] , fail_silently=False, )

非常感谢任何帮助。请注意,我已经尝试过:

  1. 在 Gmail 中启用不太安全的应用按钮
  2. 然后,我禁用了安全性较低的应用,启用了 2 因素身份验证并使用 Google 的应用密码选项。

这是完整的回溯:

    Traceback (most recent call last):
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/jatinsinghbhati/Documents/workspaces/pollsite/signup/views.py", line 40, in index
    message.send(fail_silently=False)
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/core/mail/message.py", line 284, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/core/mail/backends/smtp.py", line 102, in send_messages
    new_conn_created = self.open()
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/core/mail/backends/smtp.py", line 62, in open
    self.connection = self.connection_class(self.host, self.port, **connection_params)
  File "/Users/jatinsinghbhati/.pyenv/versions/3.9.0/lib/python3.9/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/Users/jatinsinghbhati/.pyenv/versions/3.9.0/lib/python3.9/smtplib.py", line 339, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/Users/jatinsinghbhati/.pyenv/versions/3.9.0/lib/python3.9/smtplib.py", line 310, in _get_socket
    return socket.create_connection((host, port), timeout,
  File "/Users/jatinsinghbhati/.pyenv/versions/3.9.0/lib/python3.9/socket.py", line 843, in create_connection
    raise err
  File "/Users/jatinsinghbhati/.pyenv/versions/3.9.0/lib/python3.9/socket.py", line 831, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused
[25/Feb/2021 19:38:20] "POST /signup/ HTTP/1.1" 500 101708

【问题讨论】:

  • 你能分享完整的错误追溯吗
  • 试试这个 smtp-relay.gmail.comsmtp.gmail.com
  • 您的EMAIL_HOST_PASSWORD 设置看起来很奇怪,您确定密码正确吗?您是否还检查了您的电子邮件 gmail 设置中的启用来自不太安全的应用程序的访问设置?
  • @c.grey 我已将回溯添加到问题描述中。我也试过 smtp.gmail.com 但没有运气。
  • @SLDem 安全性较低的应用程序也已启用。我在问题中使用了伪密码,在应用程序中我使用了正确的密码。

标签: python django django-rest-framework email


【解决方案1】:

应该是

EMAIL_PORT = 587

但不是

EMAIL_PORT = '587'

端口号是整数而不是字符串。

【讨论】:

  • 我也试过 EMAIL_PORT = 587,但没有用。
  • 在我的情况下我也遇到了这种问题,我创建了一个新的新gmail帐户,因为激活了对两个安全级别的访问,这也带来了一些问题。我也可以建议你碰一下这个问题,首先,尝试不使用视图,只使用 Native 的 Django 生活来找出问题。
  • 好的,你能帮我配置一下其他电子邮件提供商的配置吗,如果我只是离开 Gmail 转而使用 hotmail、live 等。
  • 就我而言,我只使用了 Gmail,我不知道为什么,但我觉得它对我有用。听从我的建议,创建一个新的 gmail 计数仅用于测试,我会尝试从 YouTube 向您发送一个对我有帮助的视频。 youtube.com/watch?v=sFPcd6myZrY
  • 感谢您的视频。它帮助我设置了身份验证。按照您的建议,我创建了新的 Gmail 帐户进行测试,但仍然遇到同样的错误。
猜你喜欢
  • 2016-06-09
  • 2011-10-28
  • 2016-06-03
  • 2018-01-09
  • 1970-01-01
  • 2014-01-04
  • 2019-05-06
  • 2020-01-13
  • 2012-01-07
相关资源
最近更新 更多