o que você precisa para enviar um e-mail com Python? Alguns conhecimentos básicos de programação e web, juntamente com as habilidades elementares de Python. Nós assumimos que você já teve um aplicativo web construído com este idioma e agora você precisa estender a sua funcionalidade com notificações ou outros e-mails enviando. Este tutorial irá guiá-lo através dos passos mais essenciais do envio de E-mails através de um servidor de SMTP:

  1. configurar um servidor para testar (sabe por que é importante?,)
    • servidor de SMTP Local
    • Mailtrap falso servidor SMTP
  2. Diferentes tipos de e-mails: HTML, com imagens e anexos
  3. o Envio de vários e-mails personalizados (Python é apenas inestimável para o e-mail de automação)
  4. Alguns populares opções de envio de e-mail como o Gmail e transacionais e serviços de e-mail

Servido com inúmeros exemplos de código!nota: escrita e testada em Python 3.7.2.

enviar um e-mail usando SMTP

a primeira boa notícia sobre o Python é que ele tem um módulo integrado para enviar e-mails via SMTP em sua biblioteca padrão., Não são necessárias mais instalações ou truques. Você pode importar o módulo usando a seguinte declaração:

import smtplib

Para se certificar de que o módulo foi importado corretamente e obter a descrição completa de suas classes e argumentos, escreva em um quadro interativo de Python sessão:

help(smtplib)

No nosso próximo passo, vamos falar um pouco sobre servidores: escolha a opção da direita e configurá-lo.,

servidor de SMTP para testar e-mails em Python

ao criar um novo aplicativo ou adicionar qualquer funcionalidade, especialmente ao fazê-lo pela primeira vez, é essencial experimentar em um servidor de teste. Aqui está uma breve lista de razões:

  1. Você não vai bater suas caixas de amigos e clientes. Isto é vital quando você testa o envio de E-mail em massa ou trabalha com uma base de dados de E-mail.não inundará a sua própria caixa de entrada com e-mails de teste.
  2. o seu domínio não será incluído na lista negra por spam.,

servidor de SMTP Local

Se preferir trabalhar no ambiente local, o servidor de depuração de SMTP local poderá ser uma opção. Para isso, o Python oferece um módulo smtpd. Tem uma funcionalidade de DebuggingServer, que irá descartar as mensagens que está a enviar e irá imprimi-las ao stdout. É compatível com todos os sistemas operacionais.,

Configurar o seu servidor de SMTP para localhost:1025

python -m smtpd -n -c DebuggingServer localhost:1025

para executar o servidor de SMTP na porta 25, você vai precisar de permissões de root:

sudo python -m smtpd -n -c DebuggingServer localhost:25

Ele vai ajudar você a verificar se o código está funcionando e apontar os possíveis problemas se houver algum. No entanto, não lhe dará a oportunidade de verificar como o seu modelo de E-mail HTML é renderizado.,

Falso servidor SMTP

Falso servidor SMTP imita o trabalho de uma verdadeira festa de 3 servidor web. Em outros exemplos neste post, vamos usar o Mailtrap. Além de testar o envio de E-mail, ele nos permitirá verificar como o e-mail será renderizado e exibido, rever a mensagem de dados raw, bem como irá nos fornecer um relatório de spam., Mailtrap é muito fácil de configurar: você vai precisar apenas copiar as credenciais geradas pelo aplicativo e colá-las em seu código.

Aqui está como ele olha na prática:

Mailtrap torna as coisas ainda mais fáceis. Vá à secção de integrações na página de configuração do SMTP e obtenha o modelo pronto a usar da mensagem simples, com as suas credenciais de Mailtrap nela., Ele é o mais básico, opção de instruir seu script Python, de quem envia o que o sendmail() método de instância:

Tente Mailtrap para Livre

O código é bem simples, não? Vamos dar uma olhada mais de perto e adicionar algum tratamento de erros (veja as explicações #no meio). Para apanhar erros, usamos os blocos” tentar” e “exceto”. Consulte a documentação para a lista de exceções aqui.,

uma Vez que você começa o Enviado resultado no Shell, você deve ver a mensagem em seu Mailtrap de entrada:

Envio de e-mail em HTML

Na maioria dos casos, você precisará adicionar alguma formatação, links, ou imagens para o seu e-mail notificações. Podemos simplesmente colocar tudo isso com o conteúdo HTML. Para este efeito, o Python tem um pacote de E-mail.

lidaremos com o tipo de mensagem MIME, que é capaz de combinar HTML e texto simples. Em Python, ele é tratado pelo e-mail.módulo mime.,

é melhor escrever uma versão de texto e uma versão HTML separadamente, e depois juntá-los com a instância MIMEMultipart(“alternativa”). Significa que tal mensagem tem duas opções de renderização em conformidade. No caso de um HTML não ser renderizado com sucesso por alguma razão, Uma versão de texto ainda estará disponível.

Introdução:

Saída:

Envio de e-mails com anexos em Python

O próximo passo no controle de envio de e-mails com Python é anexar arquivos., Os anexos ainda são os objetos MIME, mas precisamos codificá-los com o módulo base64. Alguns pontos importantes sobre os anexos:

  1. Python permite-lhe anexar ficheiros de texto, imagens, ficheiros de áudio e até mesmo aplicações. Você só precisa usar a classe de email apropriada como email.mimar.Audio.MIMEAudio ou e-mail.mimar.imagem.MIMEImage. Para obter informações completas, consulte esta seção da documentação Python. Além disso, você pode verificar os exemplos fornecidos pelo Python para uma melhor compreensão.
  2. lembre-se do tamanho do ficheiro: enviar ficheiros acima de 20MB é uma má prática.,

Em E-mails transacionais, os arquivos PDF são os mais usados: normalmente recebemos recibos, bilhetes, cartões de embarque, confirmações de encomendas, etc. Então vamos rever como enviar um cartão de embarque como um arquivo PDF.

Introdução:

Para anexar vários arquivos, você pode chamar a mensagem.anexar () método várias vezes.

Como enviar um e-mail com imagens

imagens, mesmo que façam parte do corpo da mensagem, também são anexos., Existem três tipos deles: anexos CID (embutidos como um objeto MIME), imagens base64 (embedding em linha), e imagens ligadas. Temos descrito suas peculiaridades, prós e contras, e compatibilidade com a maioria dos clientes de E-mail neste post.

vamos saltar para exemplos.

Para adicionar um CID anexo, iremos criar uma mensagem MIME com várias partes, com MIMEImage componente:

Resultado:

O CID imagem é apresentada como uma parte da mensagem HTML e como um anexo., As mensagens com este tipo de imagem são muitas vezes consideradas spam: verifique a página Analytics no Mailtrap para ver a taxa de spam e recomendações sobre a sua melhoria. Muitos clientes de E – mail – Gmail em particular-não exibem imagens de CID na maioria dos casos. Então vamos rever como incorporar uma imagem codificada base64.

Aqui vamos usar o base64 e o módulo de experimento com o mesmo arquivo de imagem:

Saída:

Agora, a imagem é inserida na mensagem HTML e não está disponível como arquivo anexado., Python codificou a nossa imagem jpg, e se formos para a Página fonte HTML, veremos a cadeia de dados de imagem longa no src img.

Como enviar vários e-mails em Python

enviar vários e-mails para diferentes destinatários e torná-los pessoais é a coisa especial sobre e-mails em Python.

para adicionar vários destinatários,você pode simplesmente digitar seus endereços separados por uma vírgula, adicionar CC e BCC. Mas se você trabalhar com um envio de E-mail em massa, Python irá salvá-lo com loops.

uma das opções é criar um banco de dados em A.,formato csv (assumimos que é gravado na mesma pasta que o seu script Python).

muitas vezes vemos os nossos nomes em exemplos de transacções ou mesmo Promocionais. Aqui está como podemos fazê-lo com Python.

vamos organizar a lista numa tabela simples com apenas duas colunas: nome e endereço de E-mail. Ele deve ser parecido com o seguinte exemplo:

#name,emailJohn Johnson,[email protected] Peterson,[email protected]

o código abaixo abrirá o arquivo e loop sobre suas linhas linha por linha, substituindo o {nome} pelo valor da coluna “Nome”.,

Introdução:

Depois de executar o script, obtemos a seguinte resposta:

Sent to John JohnsonSent to Peter Peterson>>> 

Saída

Nas nossas Mailtrap caixa de entrada, podemos ver duas mensagens: uma de John Johnson e outro para Peter Peterson, entregues simultaneamente:

Envio de e-mails com Python através do Gmail

Quando você estiver pronto para enviar e-mails para destinatários reais, você pode configurar seu servidor de produção. Também depende de suas necessidades, metas e preferências: seu local ou qualquer SMTP externo.,

uma das opções mais populares é o Gmail, por isso vamos dar uma olhada mais de perto.

muitas vezes podemos ver títulos como”Como configurar uma conta Gmail para o desenvolvimento”. Na verdade, isso significa que você vai criar uma nova conta Gmail e vai usá-la para um propósito particular.

para ser capaz de enviar e-mails através da sua conta Gmail, você precisa fornecer acesso a ele para a sua aplicação. Você pode permitir aplicativos menos seguros ou aproveitar o protocolo de autorização do OAuth2. É muito mais difícil, mas recomendado por razões de segurança.,

além disso, para usar um servidor Gmail, você precisa saber:

  • o nome do servidor = smtp.gmail.com
  • port = 465 for SSL / TLS connection (preferred)
  • ou port = 587 for STARTTLS connection.
  • utilizador = o seu endereço de E-mail do Gmail
  • senha = a sua senha.

se tiver tendência para a simplicidade, então poderá usar o Yagmail, o Gmail/SMTP Dedicado. Torna o envio de E-mail muito fácil., Basta comparar os exemplos acima com estas várias linhas de código:

Serviços de E-mail transacional

Gmail é livre e amplamente utilizado, mas ainda tem limitações para o envio de E-mail. Se suas necessidades vão muito além das regras do Gmail, escolha entre uma das opções de serviços transacionais, ou como eles também são chamados, serviços de API de E-mail.

Python é suportado pela grande maioria das APIs de E-mail de confiança para que você possa escolher de acordo com suas preferências e orçamento.,

Aqui estão algumas orientações sobre o envio de e-mails com Python através da lista dos mais populares serviços:

  • o Amazon SES
  • Mailgun
  • Mandril
  • Carimbo
  • Sendgrid
  • SocketLabs

Próximos passos com e-mails em Python

temos demonstrado apenas opções básicas de envio de e-mails com Python, para descrever a lógica e uma gama de suas capacidades. Para obter grandes resultados, recomendamos rever a documentação Python e apenas experimentar com o seu próprio código!,

Existem vários frameworks e bibliotecas Python, que tornam a criação de aplicativos mais elegantes e dedicados. Em particular, alguns deles podem ajudar a melhorar a sua experiência com a construção da funcionalidade de envio de E— mails:

os quadros mais populares são:

  1. Flask, que oferece uma interface simples para o envio de E-mail.
  2. Django, que pode ser uma ótima opção para construir modelos HTML. (E aqui está nosso tutorial sobre o envio de E-mails com Django).Zope vem a calhar para o desenvolvimento do site.,
  3. Marrow Mailer é um framework dedicado de entrega de correio adicionando várias configurações úteis.
  4. Plotly and its Dash can help with mailing graphs and reports.