在Django中发送1000多封电子邮件

时间:2011-03-29 17:48:41

标签: django django-forms django-views django-email

现在是我的设置:

connection = mail.get_connection()
maillist = []

# my real setup is a little more complex for-loop, but basicly I add all recipients to a list. 
for person in object_list:
    mail_subject = "Mail subject here"
    mail_body = "Mail body text...bla bla"
    email_sender = "me@example.com"
    maillist.append((mail_subject, mail_body, email_sender, [person.email]))

#send_mass_mail wants a tuple, so we convert the list
mailtuple = tuple(maillist)
mail.send_mass_mail(mailtuple, fail_silently=False, connection=connection)

然而,forloop迭代超过1000个对象/人,当我尝试这种方法时,我能够发送101封电子邮件,然后停止。在任何地方都没有错误(我可以看到)。

一位开发人员提到可能POST的大小太大了?来自SO社区的任何想法?

3 个答案:

答案 0 :(得分:2)

您的SMTP服务器可能有一些发送限制。例如,我认为Gmail会将外发邮件限制为100个收件人。

答案 1 :(得分:1)

正如Micah所说,你很有可能达到服务器限制。

通常,在处理群发邮件时,限制发送总是一个好主意。由于包括smtp服务器限制在内的许多实际原因,每5秒钟发送50封邮件300秒,一次打3000邮件。

答案 2 :(得分:1)

由于您提到了POST限制 - 您是否在视图中发送了电子邮件?我想知道您如何在设置中处理已取消的请求。

我正在使用管理命令发送1000多个简报。但是我没有使用send_mass_mail而是在循环中使用普通的send方法。发送邮件大约需要5分钟(没有正确的计数atm),我还没有遇到任何服务器限制。

我的计划是切换到芹菜来处理通过网络界面发送。也许你想看看它,以防你还没有。

http://celeryproject.org/