簡體   English   中英

Python發送帶有相應附件的電子郵件

[英]Python send emails with corresponding attachments

我有一個包含 3 個 XLSX 文件的桌面文件夾: ID1.xlsxID2.xlsxID3.xlsx

我可以使用以下代碼循環遍歷 3 個電子郵件地址的列表並向每個地址發送單獨的電子郵件,但它會附加文件夾中的所有 XLSX 文件。

預期結果:我想將ID1.xlsx附加到第一封電子郵件並發送, ID2.xlsx到第二封電子郵件並發送,最后將ID3.xlsx到第三封電子郵件並發送。

email_addresses = ['test1@test.com', 'test2@test.com', 'test3@test.com']

class EmailsSender:
    def __init__(self):
        self.outlook = win32.Dispatch('outlook.application')

    def send_email(self, to_email_address, attachment_path):
        mail = self.outlook.CreateItem(0)
        mail.To = to_email_address
        mail.Subject = 'Report'
        mail.Body = """Report is attached."""
        if attachment_path:
            mail.Attachments.Add(Source=attachment_path, Type=olByValue)
        mail.Send()

    def send_emails(self, email_addresses, attachment_path=None):
        for email in email_addresses:
            self.send_email(email, attachment_path)

attachment_path = r'C:\Users\Desktop\Test\*.xlsx'
email_sender = EmailsSender()
email_sender.send_emails(email_addresses, attachment_path)

您需要使用電子郵件引用文件名,因此請切換到Dictionaries

例子

email_addresses = {'test1@test.com': 'ID1.xlsx',
                   'test2@test.com': 'ID2.xlsx',
                   'test3@test.com': 'ID3.xlsx'
                   }

attachment_path = r'C:\Users\Desktop\Test'


for email, file in email_addresses.items():
    print(email, attachment_path + file)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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