如何使用python在密件抄送中发送多封电子邮件

时间:2021-02-25 00:24:43

标签: python pandas email outlook win32com

我有这个代码:

import logging
import pandas as pd
from pathlib import Path
import sys
import win32com.client
import time 


def run():
    logging.info('Inicio do run ...')

    default_path = str(Path(__file__).parents[0])

    sys.path.append(f'{default_path}')

    logging.info('Carregando a planilha de emails ...')

    email_df = pd.read_excel(r'C:\folder-path\mailing_total.xlsx', sep=';', encoding='latin')

    str1 = ' ; '.join(str(email_df['Emails1']))
    str2 = ' ; '.join(str(email_df['Emails2']))
    str3 = ' ; '.join(str(email_df['Emails3']))
    str4 = ' ; '.join(str(email_df['Emails4']))
    str5 = ' ; '.join(str(email_df['Emails5']))
    str6 = ' ; '.join(str(email_df['Emails6']))
    str7 = ' ; '.join(str(email_df['Emails7']))
    str8 = ' ; '.join(str(email_df['Emails8']))
    str9 = ' ; '.join(str(email_df['Emails9']))
    str10 = ' ; '.join(str(email_df['Emails10']))
    str11 = ' ; '.join(str(email_df['Emails11']))
    str12 = ' ; '.join(str(email_df['Emails12']))
    str13 = ' ; '.join(str(email_df['Emails13']))
    str14 = ' ; '.join(str(email_df['Emails14']))
    str15 = ' ; '.join(str(email_df['Emails15']))
    str16 = ' ; '.join(str(email_df['Emails16']))
    str17 = ' ; '.join(str(email_df['Emails17']))
    str18 = ' ; '.join(str(email_df['Emails18']))
    str19 = ' ; '.join(str(email_df['Emails19']))
    str20 = ' ; '.join(str(email_df['Emails20']))
    str21 = ' ; '.join(str(email_df['Emails21']))
    str22 = ' ; '.join(str(email_df['Emails22']))
    str23 = ' ; '.join(str(email_df['Emails23']))
    str24 = ' ; '.join(str(email_df['Emails24']))
    str25 = ' ; '.join(str(email_df['Emails25']))
    str26 = ' ; '.join(str(email_df['Emails26']))
    str27 = ' ; '.join(str(email_df['Emails27']))
    str28 = ' ; '.join(str(email_df['Emails28']))
    str29 = ' ; '.join(str(email_df['Emails29']))
    
    print(type(str1))

    if email_df.shape[0] != 0:
            
            logging.info(f'Enviando email')

            logging.info('Comunicado: Produtos estruturados')
            outlook = win32com.client.Dispatch('outlook.application')
            mail = outlook.CreateItem(0)
            mail.SentOnBehalfOfName = "email@email.com"
            mail.To = 'email@email.com'
            mail.Bcc = str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11, str12, str13, str14, str15, str16, str17, str18, str19, str20, str21, str22, str23, str24, str25, str26, str27, str28, str29
            mail.Subject = 'Comunicado - Produtos Estruturados'
            index = mail.HTMLbody.find('>', mail.HTMLbody.find('<body'))
            
            header = """
                    Prezado(a) Assessor(a),<br>
                    <br>
                    Cotações referente a commodities e moeda favor concentrar nestes chats ou no endereço de e-mail:<br><br>
                    email@email.com/ URA 11 4935-2777 (Opção 3)<br><br>
                    """
            message = """
                    <br>
                    Qualquer dúvida estamos à disposição.</p>
                    <br>
                    Atenciosamente,<br><br>
                    Isabella Schneider<br><br>
                    XP Inc | Global Markets - EDG Sales
                    <br>
                    """
            
            mail.HTMLbody = mail.HTMLbody[:index + 1] + header + message + mail.HTMLbody[index + 1:]
            mail.Send()
    
run()

我分成了几个字符串,因为每个列表有 300 封电子邮件,而outlook 每个只发送 300 封电子邮件(是一家公司) 我需要一次发送一个 str,但在 BCC 中。 运行这个出现以下错误:

属性错误:无法设置属性“CreateItem.Bcc”。

我该如何解决这个问题?

0 个答案:

没有答案