【问题标题】:Quarantine mails before sending with smtplib使用 smtplib 发送前隔离邮件
【发布时间】:2011-07-26 09:50:30
【问题描述】:

我正在使用smtplib 从 Python 脚本发送邮件。我担心我的脚本中可能存在无法预料的错误,这会导致它错误地从生产数据库向所有客户发送邮件。有没有办法在发送邮件之前临时存储邮件?可能是另一个邮件库?

如果邮件没问题,我仍然想发送邮件,所以只记录不是一个选项。

【问题讨论】:

  • 如果您的邮件列表有误或软件中存在错误,“隔离”有何帮助?普通的单元测试有什么问题?
  • 类似“理论上,理论和实践之间没有区别。但是,在实践中,是有区别的。”生产系统和测试系统之间存在一些未预料到的差异(因此未经过测试)。这些错误将被解决并彻底测试,但发送电子邮件是不可逆转的。
  • 什么? “隔离”有何帮助?请解释这个“隔离”的用例。它有什么作用?谁使用它?演员是谁?

标签: python email smtplib


【解决方案1】:

一些建议:

1:设置本地 Postfix 服务器并将其配置为暂停所有电子邮件。然后在运行脚本后手动检查邮件队列。当你看到一切都很好时释放电子邮件。

我不是后缀专家,所以我不确定细节。这是一个包含一些信息的手册页:http://www.postfix.org/access.5.html(查找 HOLD 操作)。

2:在脚本中使用命令行选项:

def sendmail(args, recipient):
    if args.dryrun:
        print "Would send to " + recipient
    else:
        print "Sending to " + recipient
        smtp.sendmail(...)

.

$ send_emails.py --dryrun
Would send to aa@aa.com
...
Would send to bb@bb.com

$ send_emails.py
Sending to aa@aa.com
Sending to bb@bb.com

【讨论】:

  • 我有类似选项 2 的东西,但在我对实时数据进行操作并且真的想发送邮件的暂存环境中,这还不够。
  • 在这种情况下,我会选择建议 1。
猜你喜欢
  • 1970-01-01
  • 2013-11-05
  • 2018-12-09
  • 2015-09-07
  • 2015-05-16
  • 2020-01-10
  • 2010-10-07
  • 2014-01-31
  • 2020-01-31
相关资源
最近更新 更多