Django 发送邮件时如何检测错误
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")
我的settings.py文件是这样的
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'
我有一个视图(它可以正常工作),如上所示,userone@example.com是发件人,usertwo@gmail.com是收件人。
我该如何检查发送邮件时出现的错误并采取相应的措施呢? (我想在出现错误时显示“发生了一些错误”)
我怎么能判断usertwo@gmail.com(收件人)是否存在呢? (如果邮件无法送达,我想告诉用户这个邮箱不存在)
我在服务器上使用的是postfix、dovecot等。
2 个回答
0
django-mail-queue
总之,我最后选择了下面这个包。
pip install django-mail-queue
这里是它的文档
1
当你把fail_silently设置为False时,你可能会遇到一些错误。只需要把send_mail放在try/except块里就可以了。
当我想对发送邮件有更多控制时,我就完全不再使用Django自带的邮件功能,而是安装了lamson(lamsonproject.org)。用这个工具,你基本上可以自己搭建一个邮件服务器,把Django的数据库连接上去,还能详细了解你的邮件发生了什么。如果你在邮件里插入一些可以下载的内容(比如图片),你甚至可以给这些图片生成哈希值,这样就能验证邮件是否被打开过。其实用Django发送邮件也可以做到这一点,但lamson让你对发送后的过程有更多的控制权。