如何在Django中发送邮件?

1 投票
4 回答
5308 浏览
提问于 2025-04-17 08:25

可能重复的问题:
Django - [Errno 111] 连接被拒绝

我找到了一篇关于如何用Django发送邮件的链接:https://docs.djangoproject.com/en/dev/topics/email/。我按照例子操作了,但出现了这个:

>>> from django.core.mail import send_mail
>>> send_mail('dfdf', 'dfdfdf', 'logadrinab@agile.com.ph', ['ddcahanap@agile.com.ph'])
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/django/core/mail/__init__.py", line 61, in send_mail
    connection=connection).send()
  File "/usr/local/lib/python2.7/dist-packages/django/core/mail/message.py", line 251, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py", line 79, in send_messages
    new_conn_created = self.open()
  File "/usr/local/lib/python2.7/dist-packages/django/core/mail/backends/smtp.py", line 42, in open
    local_hostname=DNS_NAME.get_fqdn())
  File "/usr/lib/python2.7/smtplib.py", line 239, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.7/smtplib.py", line 295, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.7/smtplib.py", line 273, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "/usr/lib/python2.7/socket.py", line 571, in create_connection
    raise err
error: [Errno 111] Connection refused
>>> 

我觉得可能是因为 EMAIL_HOST 和 EMAIL_PORT 的设置,如果真是这样的话,我该在哪里找到这些设置,怎么使用它们呢?如果不是的话,有人能给我一些关于如何在Django中发送邮件的建议吗?

提前谢谢大家...

4 个回答

0

你需要正确设置你当前主机的 SMTP 邮件后台,然后像你刚才那样进行交互测试。

有可能他们使用的是 TLS 或者其他端口——你应该在你的账户设置中查一下。或者,如果你没有其他选择,你可以把 Django 配置成使用远程服务,比如 Gmail,这样就可以开始了。

0

你说得对,确实需要在settings.py文件中填写正确的主机和端口信息。你打算使用哪个服务器呢?如果是你所用的主机服务提供商的服务器,最好联系他们的客服来获取这些信息。

3

在你的项目的 settings.py 文件中,确保你设置了 EMAIL_HOSTEMAIL_PORT 以及其他一些设置(比如如果你的邮箱服务需要验证,还要设置用户名和密码)。

另外,确保你是通过 manage.py shell 命令来运行控制台,而不是用普通的 python 控制台,这样 Django 才能正确加载这些设置。

撰写回答