Modulo 021 – Integração Python – E-mail

 – Integração Python – E-mail - Formas de Integrar Python com E-mail

No curso vamos aprender como integrar o Python com 2 dos principais gerenciadores de e-mail do mercado:
• Gmail;
• Outlook;
Antes de entendermos essas integrações vamos precisar realizar alguns setups prévios para garantir que nosso código irá funcionar.
Iniciando pelo Gmail, vamos precisar configurar nosso e-mail para que seja possível enviar e-mails a partir de “robôs” por definição padrão, o Google bloqueia esse tipo de permissão pois pode gerar uma falha de segurança.
Para realizar esse “desbloqueio”, siga os passos ao lado.

1. Acesse o Gmail e clique em “Gerenciar sua Conta do Google” dentro do campo indicado.
2. Na aba “Segurança”, clique na opção “Ativar acesso”.

Feito este setup inicial, vamos iniciar nosso código. Novamente vamos usar uma das bibliotecas disponíveis no Python:
yagmail(doc)
Como sempre vamos importar esta biblioteca. Caso a importação não ocorra, você precisará instalar esta biblioteca através do pip install dentro do Prompt do Anaconda. 

 import yagmail 

Caso você nunca tenha utilizado o yagmail é provável que seja necessária a sua instalação. Para isso, busque por Anaconda prompt no menu iniciar e após carregada a janela use o comando pip install yagmail e aguarde a instalação

– Integração de Python com Gmail

Vamos para o código em si. O primeiro método da biblioteca yagmail que vamos
utilizar será o .SMTP() que nos permitirá a fazer a identificação do usuário de e-mail (basicamente um login).
O segundo será o método que utilizaremos é o .send() que nos permitirá enviar os e-mails.
Vamos dar uma olhada no código ao lado para entender o que entendermos melhor como esses métodos funcionam. Por questões de segurança, os endereços de e-mail e senha foram ocultados.

 import yagmail 
               
 usuario = yagmail.SMTP(user='daniel@gmmail.com', password=senha) 
 usuario.send(to='daniel@gmail.com', subject= 'FUNCIONOU', contents='Olá! Lira vai ficar orgulhoso' 

• Login do e-mail a partir do método .SMTP() 
• ‘.send’: Permite o envio do e-mail
• ‘to=‘:Destinatário
 ‘subject=‘: Assunto
• ‘contents=‘: Conteúdo do e-mail

Vamos tentar agora além de uma mensagem enviar também um anexo no e-mail.
Olhando o exemplo anterior, podemos perceber que temos dentro do método .send() alguns argumentos keywords. Além dos utilizados anteriormente, podemos ver na documentação (doc) que temos outros argumentos além dos utilizados.
Um deles é o attachments que nos permite anexar documentos ao nosso e-mail.
O exemplo ao lado apresenta o que muda no código.

 import yagmail 
               
 usuario = yagmail.SMTP(user='daniel@gmmail.com', password=senha) 
 usuario.send(to='daniel@gmail.com'
              subject= 'FUNCIONOU'
              contents='Olá! Lira vai ficar orgulhoso', 
              attachments='Financeiro.xlsx') 

• ‘attachments=‘: permite o envio de anexos. Perceba que o código é essencialmente o mesmo do anterior acrescido desta keyword

Vamos agora para algumas variações, onde temos mais de um destinatário, ou mais de um anexo por exemplo.
Como talvez você possa imaginar, ao invés de colocarmos apenas uma string, usaremos uma lista de strings, como apresentado ao lado.

 import yagmail 
               
 usuario = yagmail.SMTP(user='daniel@gmmail.com', password=senha) 
 usuario.send(to=['daniel@gmail.com''daniel@gmail.com']
              subject= 'FUNCIONOU'
              contents='Olá! Lira vai ficar orgulhoso', 
              attachments=['Financeiro.xlsx', 'Logistica.xlsx']) 

• Usando as listas, podemos anexar mais de um arquivo e aumentar o número de destinatários.

– E-mail – Ajeitando o corpo do E-mail

Vamos entender melhor como enviar um e-mail de forma mais organizada utilizando o Python. Existem 2 formas:
1) O texto como uma lista de frases, onde cada item da lista é uma frase/palavra, etc;
2) Uso das aspas triplas ‘’’ e escrita como um e-mail normal.
Perceba que nos exemplos abaixo apesar de métodos diferentes, o resultado é o mesmo:

 corpo_email =
     'Fala Lira, tranquilo?'
     'Envio esse email para te passar o relatório do ano passado'
     'Att,'
     'Daniel.' 
 ] 
 corpo_email =  '\n'.join(corpo_email) 
            
 usuario.send(to='daniel@gmail.com', subject='Meu segundo Email no Python', contents = corpo_email) 

CASO 1: Nesse caso, cada uma das frases é um item da lista corpo_email. Perceba
que são separadas por vírgulas e delimitadas pelos [ ].

 corpo_email ''' 
     Fala Lira, tranquilo? 
     Envio esse email para te passar o relatório do ano passado 
     Att, 
     Daniel. 
 ''' 
     
 usuario.send(to='daniel@gmail.com', subject='Meu segundo Email no Python', contents = corpo_email) 

CASO 2: Aspas Triplas (‘’’) delimitando o início e fim do conteúdo do texto.

Ao invés de usar o Python, vamos utilizar o HTML que é uma outra linguagem que é utilizada nas estruturação de sites por exemplo.
Não é o objetivo aqui explicar a fundo o HTML, mas é importante saber que podemos usá-lo caso necessário.

 corpo_email ''' 
     <p>Fala <b>Lira</b>, tranquilo?</p> 
     <p>Envio esse email para te passar o relatório do ano passado</p> 
     <p>Att,</p> 
     <p>Daniel.</p> 
 ''' 
     
 usuario.send(to='daniel@gmail.com', subject='Meu segundo Email no Python', contents = corpo_email) 

 <b></b> indica que o texto entre estes marcadores (Lira) está em negrito
 <p></p> indica que o texto entre estes marcadores (Att,) é um paragrafo

– Integração Python com Outlook

Com o Outlook, vamos começar pelo processo de importação, assim como fizemos com o Gmail. A biblioteca que usaremos é o win32com.client. Geralmente, usamos a versão reduzida desse nome, usando apenas win32.
Importante frisar que é necessário possuir o Outlook instalado para que seja possível realizar essa operação.

 import win32com.client as win32 
 outlook = win32.Dispartch('outlook.application'
             
 mail = outlook.CreateItem(0
 mail.to = 'daniel@hashtag.com' 
 mail.subject = 'Email vindo do Outlook' 
 mail.body = 'Texto do E-mail' 
             
 attachment = r'C:\Users\danie\OneDrive\Área de Trabalho\Financeiro.xlsx' 
 mail.attachments.add(attachment) 
          
 mail.send() 

– Modelo pronto (Gabarito gmail)

import smtplib
import email.message

def enviar_email():  
    corpo_email = """
    <p>Parágrafo1</p>
    <p>Parágrafo2</p>
    """

    msg = email.message.Message()
    msg['Subject'] = "Assunto"
    msg['From'] = 'remetente'
    msg['To'] = 'destinatario'
    password = 'senha' 
    msg.add_header('Content-Type', 'text/html')
    msg.set_payload(corpo_email )

    s = smtplib.SMTP('smtp.gmail.com: 587')
    s.starttls()
    # Login Credentials for sending the mail
    s.login(msg['From'], password)
    s.sendmail(msg['From'], [msg['To']], msg.as_string().encode('utf-8'))
    print('Email enviado'

 enviar_email() 

Nenhum comentário:

Postar um comentário