【问题标题】:Python mailer dropping subjects from all except last in listPython邮件程序从列表中除最后一个之外的所有主题中删除主题
【发布时间】:2017-08-10 03:10:11
【问题描述】:

所以我正在编写一个邮件脚本,以将邮件从文本文件发送到用户列表。它工作正常,遍历列表,每个用户都会收到一封电子邮件 - 除了一个详细信息,主题从所有电子邮件中删除,除了脚本发送的最后一封电子邮件。这里发生了什么?

#!/usr/bin/env python

import sys
from smtplib import SMTP
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage


targets = open('targets.txt', "rb")

def mailme():
    for line in targets:
        msg = MIMEMultipart('alternative')
        m_source = '<sender@address.com>'
        m_target = '%s' % line
        smtp_server = 'mail.server.com'
        smtp_port = '25'
        msg['From'] = m_source
        msg['To'] = m_target
        msg['Subject'] = "Subject"
        smtp = SMTP()
        smtp.set_debuglevel(0)
        smtp.connect(smtp_server, smtp_port)

        message_text = ('Some Text for %s' % (m_target)
                        )

        message_html = ("""<body>
                        <h1>Some HTML for %s</h1>
                        </body>"""
                        ) % (m_target)

        txt = MIMEText(message_text, 'plain')
        web = MIMEText(message_html, 'html')


        msg.attach(txt)
        msg.attach(web)
        smtp.sendmail(m_source, m_target, msg.as_string())
        smtp.quit()

if __name__ == "__main__":
    mailme()
    sys.exit(0)

【问题讨论】:

  • 只是好奇。如果将msg['Subject'] 放在msg['From'] 之前会发生什么?你得到同样的错误吗?
  • 奇怪,你运行的是什么 SMTP? “targets.txt”文件中有什么?当您说“主题已删除”时,是指字段`主题`还是字段内容或两者兼而有之?
  • 当我说主题被删除时,我的意思是电子邮件中的主题字段是空白的(没有主题)。只有最后一次迭代(最后一个电子邮件地址)才能正确填充主题字段。 targets.txt 文件包含电子邮件地址。
  • @OLIVER.KOO - 这很奇怪,交换 msg['Subject'] 的位置确实有效。我不完全确定为什么!谢谢!
  • 太棒了!我建议是因为从我在docs.python.org/2/library/email-examples.html 上看到的所有课程和示例中。主题总是出现在 To 和 From 之前。既然它解决了你的问题,我会把它作为答案发布,但请人们解释一下为什么

标签: python email


【解决方案1】:

我建议 OP 将 msg['Subject'] 放在 msg['From'] 之前,它解决了问题。我建议是因为python MIME email examples/tutorials 都有msg['Subject']msg['From']msg['To'] 之前。

我认为这是一个可以遵循的模板。如果有人知道为什么这种方法可以解决问题,请对此有所了解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多