簡體   English   中英

使用循環向 Python 中的多個收件人發送自定義電子郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM