Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mandar emails com Python

Bruna Moreira
September 03, 2019

Mandar emails com Python

Usando beautiful soup e smtp para automatizar o envio de emails

Bruna Moreira

September 03, 2019
Tweet

More Decks by Bruna Moreira

Other Decks in Programming

Transcript

  1. NÃO DÁ TEMPO O QUE NÃO VEREMOS? server local google

    sheets api argparse pegar senha na execução
  2. Enviando ENTENDENDO dados conexão login envio sair import smtplib me

    = "[email protected]" you = "[email protected]" p = "senha" server = smtplib.SMTP_SSL('smtp.gmail.com', 465) server.login(me, p) server.sendmail(me, you "this message is from python") server.quit()
  3. ENTENDENDO dados conexão login envio sair Enviando import smtplib me

    = "[email protected]" you = "[email protected]" p = senha server = smtplib.SMTP_SSL('smtp.gmail.com', 465) server.login(me, p) server.sendmail(me, you "this message is from python") server.quit()
  4. Mime text from email.mime.text import MIMEText textfile = "email_template.html" with

    open(textfile) as fp: msg = MIMEText(fp.read(), 'html') Transformar template em objeto de email
  5. msg['Subject'] = 'Assunto do email' msg['From'] = me msg['To'] =

    you MIMEText Content-Type: text/html; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Assunto do email From: [email protected] To: [email protected] <!DOCTYPE doctype html> <html> <head> Modificar cabeçalho
  6. CRIAR O TEMPLATE EM HTML DEFINIR CLASSE E ID ACHAR

    AS CLASSES MUDAR OS VALORES EXEMPLOS
  7. CRIAR O TEMPLATE EM HTML DEFINIR CLASSE E ID ACHAR

    AS CLASSES MUDAR OS VALORES EXEMPLOS
  8. <p id="greetings">Olá</p> <p id="fisrt-text">Exemplo de texto para o início</p> definir

    id ou classe para facilitar a busca dos elementos que serão modificados pelo script
  9. CRIAR O TEMPLATE EM HTML DEFINIR CLASSE E ID ACHAR

    AS CLASSES MUDAR OS VALORES EXEMPLOS
  10. Título template.title <title> Título do email </title> template.title.name 'title' template.title.string

    'Título do email' Acha a tag Seleciona o nome dela Seleciona o valor dela
  11. <head> <title>Meu titulo</title> <meta> ... </meta> </head> <body> <p class="classe1">Texto</p>

    <p class="classe1">Outro texto</p> </body> template.title <title>Meu titulo</title> template.title.parent.name 'head' template.head.meta <meta> ... </meta> NAVEGAÇÃO
  12. template.find_all('p') [<p class="classe1">Texto</p>, <p class="classe1">Outro texto</p>] template.head.contents [<title>Meu titulo</title>, <meta>

    ... </meta>] <head> <title>Meu titulo</title> <meta> ... </meta> </head> <body> <p class="classe1">Texto</p> <p class="classe1">Outro texto</p> </body> template.find("p", class="classe1") <p class="classe1">Texto</p> ACHAR ELEMENTOS
  13. <head> <title>Meu titulo</title> <meta> ... </meta> </head> <body> <p class="classe1">Texto</p>

    <p class="classe1">Outro texto</p> </body> template.title.next_sibling <meta> ... </meta> template.meta.previous_sibling <title>Meu titulo</title> NAVEGAÇÃO
  14. <head> <title>Meu titulo</title> <meta> ... </meta> </head> <body> <p class="classe1">Texto</p>

    <p class="classe1">Outro texto</p> </body> template.p <p class="classe1">Texto</p> template.p.string = "Blá blá" <p class="classe1">Blá blá</p> MODIFICANDO
  15. <head> <title>Meu titulo</title> <meta> ... </meta> </head> <body> <p class="classe1">Texto</p>

    <p class="classe1">Outro texto</p> </body> template.p <p class="classe1">Texto</p> template.p.name = "a" <a class="classe1">Texto</a> MODIFICANDO
  16. <head> <title>Meu titulo</title> <meta> ... </meta> </head> <body> <p class="classe1">Texto</p>

    <p class="classe1">Outro texto</p> </body> template.p <p class="classe1">Texto</p> template.p.class = "nova-classe" <a class="nova-classe">Texto</a> MODIFICANDO
  17. <head> <title>Meu titulo</title> <meta> ... </meta> </head> <body> <p class="classe1">Texto</p>

    <p class="classe1">Outro texto</p> </body> MODIFICANDO template.p <p class="classe1">Texto</p> template.p.id = "eita" <a class="classe1" id="eita">Texto</a> del template.p['id'] <a class="classe1" >Texto</a>
  18. <head> <title>Meu titulo</title> <meta> ... </meta> </head> <body> <p class="classe1">Texto</p>

    <p class="classe1">Outro texto</p> </body> MODIFICANDO template.p <p class="classe1">Texto</p> template.p.append("Novo") <a class="classe1">TextoNovo</a>
  19. O que eu já vi? MIX AND MATCH Transformar em

    email Conexão e envio Modificar template
  20. Beautiful Soup Identificar elementos Modificar valores TEMPLATE Ordem das coisas

    MimeText Transformar Modificar CABEÇALHOS Enviar individual Percorrer lista Enviar para lista ENVIAR
  21. CSV import csv maillist = [] with open(csv_file, newline='') as

    csvfile: c = csv.reader(csvfile, delimiter=',', quotechar='|') for row in c: m = dict([('name', row[0]), ('email', row[1]), ('word', row[2])]) maillist.append(m) Biblioteca csv Cada linha um dicionário
  22. Beautiful Soup Identificar elementos Modificar valores TEMPLATE Ordem das coisas

    MimeText Modificar From To Subject CABEÇALHOS Importar emails Percorrer lista LISTA Enviar individual Enviar para lista ENVIAR