我设置了Django Mailer并将这两个命令添加到crontab中:
* * * * * root python /srv/www/cpm/manage.py send_mail >> /srv/www/cpm/cron_mail.log
0,20,40 * * * * root python /srv/www/cpm//manage.py retry_deferred >> /srv/www/cpm/cron_mail_deferred.logCPM是保存我的Django项目的目录。
重新启动cron之后,我启动了Django项目,并点击了一个链接,将大约600封电子邮件放到Django邮件队列中。cron命令接收排队的消息,并忠实地开始发送电子邮件。
为了测试的目的,每封电子邮件都是寄给我的。不出所料,电子邮件开始蜂拥而至。
然而,在大约30封电子邮件之后,我想停止发送电子邮件,因为我想做一些改变,重新开始这个过程(我现在正在测试这个应用程序)。我进入MySQL,删除了django_mailer_queuedmessages表中的所有记录,认为这将停止任何进一步的电子邮件。
电子邮件源源不断。
然后我删除了django_mailer_messages表中的所有记录,希望这样可以阻止电子邮件。
电子邮件源源不断地来!
然后,我删除了以django_mailer...开头的每个表中的所有记录,并注释掉了其中包含django-mailer的crontab行(上面的两行),并重新启动了cron。
搞什么鬼!?他们是怎么被送出去的?有趣的是,每封电子邮件都说它是在我点击Send All Emails时发送的(大约一小时前),而不是当他们到达我的收件箱时。所以,我不太清楚到底发生了什么,也不知道如何阻止电子邮件的冲击!
嘿,又一封邮件来了.
我所有的电子邮件通过我的谷歌应用程序商务电子邮件帐户。我只是用我的Python代码以标准方式连接到Gmail ..。
它停止了..。终于来了。最后,我向启动了kill命令的两个进程发送了一个cron信号。我认为唯一发生的事情是,django_mailer将所有的电子邮件都存储在内存中,并从那里发送出去。我原以为django-mailer会从队列中选择一封电子邮件(它自己的queue模型),然后发送它,然后得到下一条消息。情况似乎并非如此,因为我可以删除整个队列,并且消息仍在发送。显然,它们存在于存储在MySQL数据库中的队列之外的其他地方。
有点困惑..。
发布于 2012-01-25 05:16:11
三步解决方案:
发布于 2014-04-16 16:53:18
确保'django‘本身没有发送邮件消息。取消您的管理指令。
ADMINS = (('Bugs Bunny', 'bugs.bunny@acme.com'),)
MANAGERS = ADMINSADMINS = ()
MANAGERS = ADMINS这将阻止django在配置错误和DEBUG = False时发送电子邮件。
https://serverfault.com/questions/353343
复制相似问题