Django-Mailer不会停止发送电子邮件

我设置了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.log 

CPM是保存我的Django项目的目录。

重新启动cron我启动了我的Django项目,并单击一个链接,将大约600封邮件放到Django Mailer队列中。 cron命令拾起排队的消息并尽职尽责地发送邮件。

每个电子邮件都是为了testing目的而发给我的。 正如所料,电子邮件开始涌入。

然而,大约30封电子邮件后,我想停止发送电子邮件,因为我想做一些改变,并重新开始(我正在testing应用程序)的过程。 我进入MySQL并删除了django_mailer_queuedmessages表中的所有logging,认为这将停止任何进一步的电子邮件。

电子邮件不断出现。

然后,我删除了django_mailer_messages表中的所有logging,希望能够阻止电子邮件。

电子邮件不断来!

然后,我删除了每个表中以django_mailer...开头的所有loggingdjango_mailer...并且还注释了在其中有django-mailer (上面的两个)的crontab行,并重新启动了cron

电子邮件仍然来!

有没有搞错!? 他们怎么还在发送? 有趣的是,每封电子邮件都说明是在我单击“ Send All Emails (大约一小时前)时Send All Emails而不是当他们到达我的收件箱时发送的。 所以,我不确定发生了什么事情,或者如何阻止这种电子邮件的冲击!

嘿看, 另一封电子邮件刚刚到达

编辑1

我通过我的Google Apps Business电子邮件帐户路由了所有电子邮件。 我只需以标准的方式在我的Python代码中连接到Gmail …

编辑2

它终于停下来了。 最后我发送了一个kill信号给启动了cron命令的两个进程。 我唯一能想到的是django_mailer把所有的电子邮件存储在内存中,并从那里发送。 我以为django-mailer会从队列中select一个邮件(自己的queue模型),发送它,然后得到下一个消息。 这似乎并不是这种情况,因为我可以删除整个队列,消息仍在发送。 显然,它们存在于MySQL数据库中存储的队列之外的地方。

有点困惑…

三步解决scheme:

  1. 从你的crontab中删除条目
    我不知道它是否每隔60秒发出一封电子邮件,但删除或注释这些线,所以我们确信新邮件没有被注入。

  2. 转储您的邮件队列
    …以任何方式适合您的MTA软件(因为您不指定您的MTA,我不能更具体)。 这应该摆脱等待发送的任何邮件(您可能会有大量的积压)

  3. 手动testing观察系统的行为这将使您可以确定发生了什么,以及如何防止它在将来发生。

确保'django'本身不发送邮件。 取消设置您的ADMIN指令。

旧的settings.py

 ADMINS = (('Bugs Bunny', '[email protected]'),) MANAGERS = ADMINS 

新的settings.py

 ADMINS = () MANAGERS = ADMINS 

这会使django本身不能在发生错误configuration和DEBUG = False时发送电子邮件