[英]Using a loop to send customized emails to multiple recipients in Python
我正在編寫代碼以使用相同的 html 模板向多個收件人發送自定義電子郵件。 該代碼從 csv 文件中提取信息。
但是,我無法遍歷收件人以一一發送 email。 這就是我所擁有的:
email_list = [abc@gmail.com, def@gmail.com, ghi@gmail.com]
email['from'] = 'Zoya Aqib'
for recipient in email_list:
email['to'] = recipient
email['subject'] = 'Corporate Rating Quiz'
for index,row in df.iterrows():
email.set_content(html.substitute({'name': row['First Name'],'score': row['Score']}))
with smtplib.SMTP(host='smtp.gmail.com',port=587) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.login('me@gmail.com','mypassword')
smtp.send_message(email)
print('all done!')
但我收到此錯誤“ValueError:消息中的標題最多可能有 1 個”
如何在自定義模板時遍歷收件人,如上所示?
提前致謝!
我猜是因為您沒有將 email 地址存儲為字符串。 只需將它們括在引號中,它應該可以工作。
您不能一次將消息發送給多個收件人。 我想你應該單獨發送消息。
由於您多次設置電子郵件['to'],您應該剛剛更換 header 並將消息發送到最后一個地址,但這並不是實際發生的情況。 所以 IDK email
是什么,但這里的解決方案可能適用於您的情況:
email_list = ['abc@gmail.com', 'def@gmail.com', 'ghi@gmail.com']
email['from'] = 'Zoya Aqib'
email['subject'] = 'Corporate Rating Quiz'
for index,row in df.iterrows():
email.set_content(html.substitute({'name': row['First Name'],'score': row['Score']}))
with smtplib.SMTP(host='smtp.gmail.com',port=587) as smtp:
smtp.ehlo()
smtp.starttls()
smtp.login('me@gmail.com','mypassword')
for recipient in email_list:
if 'to' in email:
del email['to']
email['to'] = recipient
smtp.send_message(email)
print('all done!')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.