Python Django在发送邮件时检测错误

Python Django在发送邮件时检测错误,python,django,email,Python,Django,Email,我的settings.py是 def send_one_mail(request): send_mail('The subject', 'The body to testing', 'userone@example.com',['usertwo@gmail.com'], fail_silently=False) return HttpResponse("This mail has sent successfull") 我有一个视图(可以工作),如上图所示userone@exa

我的settings.py是

def send_one_mail(request):
   send_mail('The subject', 'The body to testing', 'userone@example.com',['usertwo@gmail.com'],    fail_silently=False)
   return HttpResponse("This mail has sent successfull")
我有一个视图(可以工作),如上图所示userone@example.com是发送方和usertwo@gmail.com 这是听筒

如何检查发送邮件时的错误并根据错误采取行动? (我想在这些错误中显示“发生了一些错误”)

我如何确定usertwo@gmail.com(接收器)是否存在? (如果无法访问电子邮件,我想向用户显示该电子邮件不存在)


我正在服务器中使用postfix、dovecot等。

当您使用fail\u静默=False时,您可能会发现一些错误。只需在try/except中包装发送邮件即可

当我想要更多地控制电子邮件发送时,我完全停止使用django邮件,而是安装了lamson(lamsonproject.org)。基本上,您可以使用它创建自己的邮件服务器,将django orm附加到该服务器上,并提供有关电子邮件的详细反馈。如果您在这些电子邮件中插入某种可下载的内容(如图像),那么您甚至可以对图像进行哈希运算,并通过这种方式验证电子邮件是否也已打开。你也可以通过基于django的电子邮件发送来做到这一点。在点击发送按钮后,Lamson对发送内容和方式进行了更多的控制。

django邮件队列 无论如何,我最终还是使用了下面的软件包

EMAIL_USE_TLS = True
EMAIL_HOST = 'mail.example.com'
EMAIL_HOST_USER = 'userone@example.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = 'userone@example.com'
SERVER_EMAIL = 'userone@example.com'
这是文件


我认为你是对的。但仍在等待其他答案。但是你知道关于这个特殊案例的例外情况吗?有没有关于发送邮件功能的简洁文档?最好的文档是阅读源代码。大多数情况下,您将使用带有smtp后端(默认设置)的邮件,并且它没有特殊的异常类-您可以通过打开django.core.mail.backends.smtp自己进行检查。因此,错误消息可能是任何smtp错误:。但在大多数情况下,错误是:错误的adders(您可以使用EmailField省略)或错误的域名-如果域名类似于myfunnydomainnamewhichdoesnotexist.net,邮件服务器将拒绝邮件。所有其他错误都会出现反弹,而且,无论如何,您都无法返回带有视图的邮件,因为当端点邮件服务器以类似于-地址不存在或邮箱超出配额的方式响应时,您的邮件服务器会接收到这些邮件。因此,无法处理跳转?例如,当给定一个不存在的。通过网络,我想到了使用python的包validate_email来验证。在django中使用这样的包是一个好主意吗?您可以通过编程postfix来处理反弹。但在我看来,使用像lamsonproject这样的项目要容易得多。使用像您链接的包这样的包不是很好的主意,因为用户希望页面加载接近即时,而这样的包实际上会阻止视图执行他们正在执行的操作。当然,大多数情况下,这可能需要很长时间,但很少会引发用户的愤怒。本质上,您正在尝试使用用户体验,这里的问题是如何确保用户在适当的时间获得适当的反馈。而且大多数用户知道如果他们输入不正确的EMAILA边注,他们不会收到信件,如果有人使用Django邮件队列,我想,你应该考虑日志记录。我有一些未被注意到的异常(即没有抛出异常),在记录该异常后,这些异常被静音。
pip install django-mail-queue