【问题标题】:MIMEMultipart edit msg['To'] recipientsMIMEMultipart 编辑 msg['To'] 收件人
【发布时间】:2017-10-10 03:55:50
【问题描述】:

我有一个循环遍历地址列表并向每个地址发送邮件。

def send_mail(self, user_name, smtp_host, smtp_user, smtp_pass, smtp_port):
    s = smtplib.SMTP_SSL(smtp_host[0],smtp_port[0])
    s.login(smtp_user[0],smtp_pass[0]) 

    msg = MIMEMultipart()         
    msg.attach(MIMEText(self.message))
    msg['From'] = user_name[0]        
    msg['Subject'] = self.subject

    for f in self.attachment_list:
        part = MIMEBase('application', "octet-stream")
        part.set_payload(open('temp/'+f,"rb").read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', 'attachment; filename="{0}"'.format(os.path.basename(f)))
        msg.attach(part)
    for i,address in enumerate(Sheet.email_list):
        print("Send email: " + address)           
        msg['To'] = address
        s.sendmail(smtp_user[0], address, msg.as_string())
    s.quit()    
    print("SMTP connection closed")

代码运行良好,并向每个地址发送一封电子邮件。但是,当我在邮件应用程序中查看电子邮件时,它会列出每个地址的“收件人:”。我打算让它只列出接收电子邮件地址的收件人。我玩弄了代码,我确定问题来自 msg['To']。我尝试了很多方法来调整它,但我不知道如何让它只显示一个收件人地址。

msg['To'] addresses

【问题讨论】:

    标签: python email smtp


    【解决方案1】:

    我找到了答案。我需要用每次迭代替换 To 标头。

            if 'To' in msg:
                msg.replace_header('To', address)
            else:
                msg['To'] = address
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      相关资源
      最近更新 更多