无法使用Django芹菜发送电子邮件

时间:2017-11-20 20:19:17

标签: python django email

我尝试使用Celery和RabbitMQ在我的django项目中发送电子邮件。 这是我在GitHub上的项目https://github.com/Loctarogar/Django-by-Example。 在我的tasks.py文件中键入admin@myshop.com但我尝试将其更改为我的真实谷歌邮件,但没有任何效果。

每次出现此错误:

[2017-11-20 20:09:36,747: ERROR/ForkPoolWorker-4] Task orders.tasks.order_created[a8fe13ed-08dc-4971-82ff-f184e197ab8d] raised unexpected: ConnectionRefusedError(111, 'Connection refused')
Traceback (most recent call last):
  File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/app/trace.py", line 374, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/morilon/dj/shop/lib/python3.5/site-packages/celery/app/trace.py", line 629, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/morilon/dj/shop/myshop/orders/tasks.py", line 14, in order_created
    mail_sent = send_mail(subject, message, 'admin@myshop.com', [order.email])
  File "/home/morilon/dj/shop/lib/python3.5/site-packages/django/core/mail/__init__.py", line 62, in send_mail
    return mail.send()
  File "/home/morilon/dj/shop/lib/python3.5/site-packages/django/core/mail/message.py", line 348, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/home/morilon/dj/shop/lib/python3.5/site-packages/django/core/mail/backends/smtp.py", line 104, in send_messages
    new_conn_created = self.open()
  File "/home/morilon/dj/shop/lib/python3.5/site-packages/django/core/mail/backends/smtp.py", line 64, in open
    self.connection = self.connection_class(self.host, self.port, **connection_params)
  File "/usr/lib/python3.5/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.5/smtplib.py", line 335, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python3.5/smtplib.py", line 306, in _get_socket
    self.source_address)
  File "/usr/lib/python3.5/socket.py", line 711, in create_connection
    raise err
  File "/usr/lib/python3.5/socket.py", line 702, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

2 个答案:

答案 0 :(得分:1)

我有完全相同的问题,但我通过设置我的settings.py来解决它,就像skulegirl说的那样,只需将其添加到我的settings.py

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

我希望它可以帮到你。

答案 1 :(得分:0)

您的代码仓库配置为使用控制台后端发送电子邮件,但您的回溯显示正在使用smtp后端。我假设你已经改变了后端,这就是造成错误的原因。

默认情况下,smtp后端在localhost上查找smtp服务器。我猜你没有在那里跑。

如果你想通过gmail的smtp服务器发送,你只需要在settings.py文件中配置approriate设置。 See the django docs for what needs to be configured。阅读gmail文档以获取要使用的确切smtp主机地址。

相关问题