我知道有20个问题和我的类似,但我已经try 了一天多的时间来让邮箱与Django一起工作.

当我try 发送邮箱时收到此错误:[Errno 111] Connection refused

在我的视图中,这是我创建邮箱并try 发送它的位置:

try:
    msg = EmailMessage(subject, message, from_email, [receiver])
    msg.content_subtype = "html"
    msg.send()

我的设置文件如下:

EMAIL_HOST = "localhost"
DEFAULT_FROM_EMAIL = "myemail@gmail.com"
EMAIL_PORT = 25
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"

我曾经try 过用python -m smtpd -n -c DebuggingServer localhost:1025发送测试,并取得了成功,但当涉及到真正的发送时,没有成功.

当我try 从shell执行send_mail时,我得到以下回溯:

>>> from django.core.mail import send_mail
>>> send_mail('Test', 'Test', 'myemail@gmail.com', ['myemail@gmail.com'])
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/django/core/mail/__init__.py", line 61, in send_mail
    connection=connection).send()
  File "/usr/local/lib/python2.6/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.6/dist-packages/django/core/mail/backends/smtp.py", line 79, in send_messages
    new_conn_created = self.open()
  File "/usr/local/lib/python2.6/dist-packages/django/core/mail/backends/smtp.py", line 42, in open
    local_hostname=DNS_NAME.get_fqdn())
  File "/usr/lib/python2.6/smtplib.py", line 239, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python2.6/smtplib.py", line 295, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/lib/python2.6/smtplib.py", line 273, in _get_socket
    return socket.create_connection((port, host), timeout)
  File "/usr/lib/python2.6/socket.py", line 561, in create_connection
    raise error, msg
error: [Errno 111] Connection refused

我只是觉得这件事没什么进展.任何帮助或建议都将不胜感激.谢谢

另外,如果你还有什么想看的,尽管 comments .

推荐答案

你想用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

然后try 测试(Django<;1.4)

python manage.py shell
>>> from django.core.mail import send_mail
>>> send_mail('test email', 'hello world', to=['test@email.com'])

如果您使用Django 1.4,请使用以下代码:

python manage.py shell
>>> from django.core.mail import send_mail
>>> send_mail('test email', 'hello world', 'your@email.com', ['test@email.com'])

如果你没有使用Gmail账户,仍然有问题,那么就试着在你拥有的基础上加上EMAIL_HOST_USEREMAIL_HOST_PASSWORD. 如果您仍然有问题,可能是您的网络阻止了您.操作系统或路由上的防火墙.

Thanks to knite for the updated syntax. Throw him a +1,并感谢pranavk让我了解Django 1.4中的语法更改

Django相关问答推荐

AttributeError:';ManyToOneRel&39;对象没有属性';attname';

无法在views.py django中验证密码

情节主题更改问题

来自日历的 Django 动态 url

根据当前对象中的多对多字段过滤对象

Django:使用相同的外键在不同的应用程序中 Select 多个列

Django 模型 Select - 只允许管理界面上的特定转换

Django InlineModelAdmin:部分显示内联模型并链接到完整模型

Django - 如何在其管理模块中访问模型的详细名称?

测试 Django ModelForm 是否有实例

Django:创建索引:非唯一,多列

如何在 twitter-bootstrap 模式窗口中插入 django 表单?

获取 Django 表单中的错误列表

如何在 django admin 中显示布尔属性

Django - 配置不当:模块django.contrib.auth.middleware

如何找到两个 Django 查询集的交集?

如何将本地文件分配给 Django 中的 FileField?

如何获取 Django 模型字段对象的值

从 git 存储库中删除并忽略所有具有扩展名的文件

Django的不区分大小写的网址?