我有一个循环遍历地址列表并向每个地址发送邮件。
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")
代码运行正常并向每个地址发送电子邮件。但是,当我在邮件应用程序中查看电子邮件时,它会列出:" To:"每个地址。我打算只列出收到电子邮件地址的收件人。我玩了代码,我已经确定问题来自于msg [' To']。我试图通过多种方式进行调整,但我不知道如何只使用显示的一个收件人地址进行发送。
答案 0 :(得分:0)
我找到了答案。我需要在每次迭代时替换To标头。
if 'To' in msg:
msg.replace_header('To', address)
else:
msg['To'] = address