簡體   English   中英

如何在 python 中的 outlook 上向多個人發送電子郵件?

[英]How do I send emails to multiple people on outlook in python?

被一個小問題困了2天。 我正在嘗試使用我的 outlook 向多個人發送多封電子郵件。 這是我正在嘗試做的事情:

  1. 根據公司名稱將 excel 文件拆分為多個文件
  2. 將 excel 附加到 email 上並發送。 email 是從存儲在 excel 中的 email id 的主列表中挑選出來的。

問題:我在運行程序時收到以下錯誤代碼。 我可以將大 excel 分解為多個較小的 excel,然后我收到此錯誤消息。

(-2147352567,'發生異常。',(4096,'Microsoft Outlook','該項目已被移動或刪除。',無,0,-2147221238),無)

#code

import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)


file_path = r'C:\Users\ABC\Documents\Email\Email.xlsx'
df1 = pd.read_excel(file_path, sheet_name = 'Master excel')
df2 = pd.read_excel(file_path, sheet_name = 'Email list')

df11 = df1['Co name'].unique()
list_carrier = list(df11)

path = r'C:\Users\ABC\Documents\Python\Email\np\\'
for i in list_carrier:
    dfa = df1[df1['Co Name']==i]
    wb = Workbook()
    path_1=path+i+".xlsx"
    writer = pd.ExcelWriter(path_1, engine='openpyxl', mode='W')
    writer.wb = wb
    dfa.to_excel(writer, sheet_name="sheet1")
    writer.save()

for i in list_carrier:

    email = df2.loc[df2['Co Name'] == i, 'Email'].item()
    mail.cc = 'abc@gmail.com; xyz@gmail.com'
    mail.To = email
    mail.Subject = f" {i} - File for testing"
    mail.Body = """\
    Hi, 

    sending test mail.

    Regards, """

    path_1=path+i+".xlsx"
    mail.Attachments.Add(path_1)
    mail.Send()

每次調用Send后,您必須在循環中創建一個新的MailItem 您不能多次提交項目,即調用Send方法兩次。

#code

import win32com.client as win32
outlook = win32.Dispatch('outlook.application')


file_path = r'C:\Users\ABC\Documents\Email\Email.xlsx'
df1 = pd.read_excel(file_path, sheet_name = 'Master excel')
df2 = pd.read_excel(file_path, sheet_name = 'Email list')

df11 = df1['Co name'].unique()
list_carrier = list(df11)

path = r'C:\Users\ABC\Documents\Python\Email\np\\'
for i in list_carrier:
    dfa = df1[df1['Co Name']==i]
    wb = Workbook()
    path_1=path+i+".xlsx"
    writer = pd.ExcelWriter(path_1, engine='openpyxl', mode='W')
    writer.wb = wb
    dfa.to_excel(writer, sheet_name="sheet1")
    writer.save()

for i in list_carrier:

    mail = outlook.CreateItem(0)
    email = df2.loc[df2['Co Name'] == i, 'Email'].item()
    mail.cc = 'abc@gmail.com; xyz@gmail.com'
    mail.To = email
    mail.Subject = f" {i} - File for testing"
    mail.Body = """\
    Hi, 

    sending test mail.

    Regards, """

    path_1=path+i+".xlsx"
    mail.Attachments.Add(path_1)
    mail.Send()

暫無
暫無

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

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