如何使用django设置发送电子邮件的超时时间?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用django设置发送电子邮件的超时时间?相关的知识,希望对你有一定的参考价值。

我正在尝试使用Django设置发送电子邮件的超时。我正在使用django 1.7.3和python v2.7.6。我的方法是遵循here中的django文档。所以我所做的是通过使用以下代码在django / core / mail / backends文件夹上创建名为myemailbackend.py的文件来创建自定义电子邮件后端:

from django.core.mail.backends import smtp

class MyEmailBackend(smtp.EmailBackend):
  def __init__(self, *args, **kwargs):
      kwargs.setdefault('timeout', 3) #this is 3 secs, i believe.
      super(MyEmailBackend, self).__init__(*args, **kwargs)

在我的settings.py之后我设置了我的EMAIL_BACKEND:

# Email setup

EMAIL_BACKEND = 'django.core.mail.backends.base.myemailbackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'xxxx@gmail.com'
EMAIL_HOST_PASSWORD = 'xxx'
EMAIL_PORT = 587
# EMAIL_TIMEOUT = 3  # 3 sec, this would be great but i notice that this is not possible since that backend stmp.py doesn't expect to get "EMAIL_TIMEOUT" var.

在我运行服务器后,我注意到这似乎不起作用,我注意到myemailbackend.py没有编译。我错过了什么?我怎样才能设置发送电子邮件的超时,毕竟?

答案

如果它在文件夹myemailbackend.py中命名为django/core/mail/backends,那么您的设置将是

EMAIL_BACKEND = 'django.core.mail.backends.myemailbackend.MyEmailBackend'

话虽如此,将代码放入Django文件夹是个坏主意。最好将它放在一个应用程序(例如,my_app/mymailbackend.py)中,这样它就不会受到Django重新安装和/或升级的影响。

另一答案

Django有一个设置:EMAIL_TIMEOUT

以上是关于如何使用django设置发送电子邮件的超时时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Django 将电子邮件作为别名发送

如何配置 Django 通过 Postfix 发送邮件? [关闭]

如何在django中设置发送邮件

Django 不发送错误电子邮件 - 我该如何调试?

使用 Redis、Celery 设置 Django 以通过 Gmail 发送电子邮件

无法使用 django-graphql-auth 设置新密码