Enviar e-mail em Python com método API: um guia passo a passo

Se você quiser enviar e-mails em Python, use uma solução de API de e-mail confiável e segura. Neste artigo, você aprenderá o processo passo a passo de envio de e-mails em Python usando o método API.

Configurando a API de e-mail

Para agilizar o envio de e-mails em Python, você pode usar um serviço de e-mail transacional como Mailtrap, Gmail API, Sendgrid, etc. E uma API também permite automatizar grande parte do envio de e-mails.

Agora, mostrarei como enviar diferentes tipos de e-mails (texto simples, e-mail com anexos, e-mails HTML) e enviar e-mails para vários destinatários em Python usando um API de e-mail Antes disso, vamos entender como configurar uma API de e-mail:

  • Escolha uma API de e-mail: Para começar, escolha uma API de e-mail de acordo com suas preferências. Certifique-se de que ela oferece Python SDKs para enviar e-mails automatizados (por exemplo, Python SDK do Mailtrap).
  • Inscrever-se: Inscreva-se no provedor de API de e-mail escolhido.
  • Conecte e verifique seu domínio: Em seguida, conecte e verifique seu domínio com o provedor de serviços de API de e-mail que você escolheu. Se não for verificado, você poderá enviar e-mails somente para o endereço de e-mail do proprietário da conta.

Isso garante que os destinatários recebam apenas e-mails genuínos, evitando spam. Com base no provedor de serviços, autenticação de domínio completa.

  • Instalar biblioteca de API de e-mail: Vamos chamar nossa API de e-mail de “MyEmailAPI”. Certifique-se de que o aplicativo Python esteja instalado em seu sistema e então instale o SDK Python do MyEmailAPI usando o comando abaixo:

pip instalar meuemailapi

Enviar um e-mail de texto simples

Etapa 1: crie seu objeto de e-mail e preencha as variáveis

1
import myemailapi
2

3
# Create a mail object

4

5
mailobj = Mail(
6
        newsender= Address(email1=testmail@domain.com, name=Test Sender),
7
        to=[Address(email1=reciever@example.com, name=Test Receiver)], 
8
        newsubject=Test email,
9
        newtext=This is a plain-text email.,
10
)

Agora, crie o cliente de e-mail usando seus tokens de API:

  1. Abrindo sua conta de API de e-mail
  2. Encontrando tokens de API e copiando as credenciais

Etapa 2: envie sua mensagem

# Definir cliente de API de e-mail e enviar e-mail

1
emailclient = MyEmailAPIClient(newtoken=new-api-key)
2
emailclient.send(mailobj)

Aqui está o trecho de código completo:

1
from myemailapi import Mail, EAddress, MyEmailAPIClient     
2
mailobj = Mail(
3
             # Define sender address and name

4
             newsender=Address(email1=testmail@domain.com, name=Test Sender),
5
             # Define receivers

6
             to=[Address(email1=receiver@example.com, name=Test Receiver)], 
7
             # Email subject

8
            newsubject=Test email,
9
            # Define plain text

10
            newtext=Hi,/nThis is a plain-text email.,
11
 )
12

13
# Define MyEmailAPIClient using your API keys 

14
emailclient = MyEmailAPIClient(newtoken=new-api-key)
15

16
# Send your plain-text email

17
emailclient.send(mailobj)
18

19
print(Congrats! Youve successfully sent your first plain text email in Python.)

Enviar um e-mail HTML

Siga as instruções para envie um e-mail em HTML:

  • Especifique o parâmetro HTML: Especifique o parâmetro ‘html’ para o objeto – “Mail”. É aqui que você manterá o conteúdo HTML que criar. Clientes de e-mail que podem exibir HTML renderizarão esta seção de e-mail.
  • Conteúdo de texto de fallback: Se um cliente de e-mail não puder renderizar conteúdo HTML, o texto simples que você definirá dentro do e-mail será usado como fallback. Isso também é útil para usuários finais que preferem e-mails baseados em texto puro.

Aqui está o trecho de código completo para enviar um e-mail Python com conteúdo HTML:

1
from myemailapi import Mail, EAddress, MyEmailAPIClient     
2

3
mailobj = Mail(                         # Create the Mail object for the HTML email

4
             # Define sender address and name

5
             newsender=Address(emailaddress=testmail@domain.com, name=Test Sender),
6
             # Define receivers

7
             to=[Address(emailaddress=receiver@example.com, name=Test Receiver)], 
8
             # Define email subject

9
            newsubject=HTML email,
10
            # Define text

11
            newtext=Hi,/nEmail client cant render HTML? Use this fallback text.,
12
            html_text=“””
13
            <html>
14
                      <head>
15
                                 <title>Titletitle>
16
                      head>
17
                                 
18
                      <body>
19
                                <h1>Hi, there!h1>
20
                                 <p>This is text HTML content sent using MyEmailAPI.p>
21
                      body>
22
            html>
23
            “””,
24
 )
25

26
# Define MyEmailAPIClient using your API keys 

27
emailclient = MyEmailAPIClient(newtoken=new-api-key)
28

29
# Send your HTML email

30
emailclient.send(mailobj)
31

32
print(Congrats! Youve successfully sent your first HTML email.)

Enviar e-mail para vários destinatários

Siga as instruções abaixo:

  • Configuração de múltiplos destinatários: Alterarei a seção de destinatários para configurar o e-mail para mais destinatários. Em vez de usar apenas um endereço ‘para’, usaremos vários endereços.
  • Definindo o campo ‘Para’: No código abaixo, definiremos dois endereços de destinatários para o campo ‘Para’: [email protected] e [email protected]. Além disso, definiremos nomes para cada destinatário – Receptor de teste 1 e Receptor de teste 2.

Aqui está o código completo para enviar um e-mail para vários destinatários em Python:

1
from myemailapi import Mail, EAddress, MyEmailAPIClient     
2

3
# Create the Mail object for multiple recipients 

4
mailobj = Mail(  
5
               # Define sender address and name

6
               newsender=Address(emailaddress=testmail@domain.com, name=Test Sender),
7
               # Define receivers

8
              para=[
9
                    Address(emailaddress=receiver1@example.com, name=Test Receiver 1)],
10
                    Address(emailaddress=receiver2@example.com, name=Test Receiver 2)], 
11
              ],
12
             # Define email subject

13
             newsubject= This is email subject,
14
             # Define text

15
             newtext=Hello, /nThis email has multiple recipients.,
16
 )
17

18
# Define MyEmailAPIClient using your API keys 

19
emailclient = MyEmailAPIClient(newtoken=new-api-key)
20

21
# Send email

22
emailclient.send(mailobj)
23

24
print(Congrats! Youve successfully sent emails to multiple recipients in Python.)

Enviar e-mail com anexos

Siga as instruções abaixo:

  • Especifique o caminho do arquivo: Primeiro, especifique o caminho do arquivo para os anexos. O código lerá o conteúdo do arquivo como bytes para garantir que cada anexo tenha a codificação adequada. Dessa forma, os anexos são transmitidos com segurança pela rede.
  • Codificar em Base64: Certifique-se de codificar o conteúdo do arquivo em base64 para protegê-lo de agentes maliciosos, pois os protocolos de e-mail não têm recursos de segurança binária. Quando você codifica o conteúdo do arquivo, os dados binários serão convertidos em texto para transmissão segura. Use o seguinte método para codificar o conteúdo do arquivo:

base64.b64codificação

  • Crie o arquivo Anexo: Crie a instância da classe Attachment com os seguintes parâmetros:
  1. disposição_nova: Para indicar o arquivo como um anexo, o ‘disposition_new’ é definido como ‘Disposition.ATTACHMENT’.
  2. conteúdo_novo: Representa o conteúdo do arquivo codificado em base64
  3. mimetype_new: O parâmetro sinaliza aos clientes de e-mail sobre o tipo de arquivo.

Aqui está o código completo:

1
from myemailapi import Mail, EAddress, MyEmailAPIClient Attachment, Disposition
2
import base64
3
from pathlib import Path
4

5
# Define files to attach 

6
filepath = Path(thisis/your/filepath/abc.pdf)           # Insert your file’s name 

7
filecontent = filepath.read_bytes()   
8

9
# Base64 is used to encode the content of the file 

10
encodedcontent = base64.b64encode(filecontent)
11

12
# Specify the email object with an attachment 

13
mailobj = Mail(
14
               # Define sender address and name

15
               newsender=Address(emailaddress=testmail@domain.com, name=Test Sender),
16
               # Define receiver

17
              to=[Address(emailaddress=receiver@example.com, name=Test Receiver)],
18
              # Define email subject

19
             newsubject= Attachment inside!”,
20
             # Define text

21
             newtext=Hello, /nThis email has an important attachment.,
22
             # Define email attachment

23
             anexos_novos=[
24
                 Attachment(
25
                       content_new=encodedcontent,                        
26
                       filename_new=filepath.name,                      # The file name 

27
                      disposition_new=Disposition.ATTACHMENT,      
28
                      mimetype_new= application/pdf,                       # The file type used here is PDF

29
               )
30
         ],
31
   )
32

33
# Define MyEmailAPIClient using your API keys 

34
emailclient = MyEmailAPIClient(newtoken=new-api-key)
35

36
# Send email

37
emailclient.send(mailobj)
38

39
print(Congrats! Youve successfully sent emails with an attachment.)

Teste o e-mail antes de enviar

Antes de enviar e-mails em massa usando um serviço de API de e-mail, certifique-se de testá-lo previamente em um servidor de teste. Isso é semelhante a testar um novo aplicativo ou lançar um novo recurso em seu aplicativo.

Uma API de teste de e-mail funcionará como um servidor web de terceiros. Você obterá um ambiente de preparação seguro onde poderá manipular seu tráfego de e-mail internamente e verificar se a funcionalidade de envio de e-mail está funcionando bem. Você também pode detectar e resolver bugs e erros antes de enviar seus e-mails para destinatários segmentados. Além disso, você pode visualizar e avaliar seu conteúdo de e-mail em diferentes dispositivos e clientes de e-mail para otimizar sua mensagem.

Como resultado, você será capaz de:

  • Envie e-mails para os destinatários certos e melhore a entregabilidade dos e-mails
  • Evite enviar spam aos destinatários com muitos e-mails de teste
  • Evite enviar e-mails com links quebrados, especialmente em e-mails transacionais, como e-mails de confirmação de assinatura
  • Proteja a reputação do seu domínio evitando a inclusão de domínios na lista negra ou a obtenção de pontuações mais altas de spam

Portanto, antes de enviar seus e-mails, envie-os para um endereço de e-mail designado usando uma API de teste de e-mail. Visualize o conteúdo do e-mail, verifique os links, corrija problemas e, então, envie seus e-mails somente para o público-alvo.

Na seção abaixo, mostrarei como testar um e-mail usando uma hipotética API de teste de e-mail – ‘EtestAPI’. Veja como começar passo a passo:

  1. Conecte-se ao cliente EtestAPI
  2. Defina o conteúdo do e-mail – assunto, texto, anexos (se houver), remetente e destinatário(s)
  3. Gere uma solicitação POST para EtestAPI usando seus dados e token de API.

Aqui está o código completo para testar seu e-mail usando EtestAPI:

1
# Import ‘json’ and ‘requests’ libraries for handling JSON data and HTTP requests

2
import requests
3
import json
4

5
# Define a function ‘test_my_email’ with parameters for email testing

6
def test_my_email(etestapi_token1, inbox_id1, sender_email1, recipient_email1, subject, text):
7
    url = f"https://api.etestapi.com/v1/inboxes/{inbox_id1}/messages"
8
    headers = {
9
        "Authorization": f"Bearer {etestapi_token1}",
10
        "Content-Type": "application/json",
11
    }
12
    
13
    data = {
14
        "from": [{sender_email1: sender@domain.com, name: Test Sender}],
15
        "to": [{recipient_email1: receiver@example.com, name: Test Receiver}],
16
        "subject": Email Test,
17
        "text": Hi,/nLets perform email testing,
18
    }
19
    
20

21
    # Convert data to a JSON string

22
    json_data = json.dumps(data)
23

24
    # make a POST request using ‘requests.post’ to send your email to EtestAPI and get the response in JSON

25
    response = requests.post(url, headers=headers, json_data)
26

27
    if response.status_code == 200:
28
        print("Congrats! Your email test is successful!")
29
        print("The test email is sent to EtestAPI inbox.")
30
    else:
31
        print(f"Test email failed: {response.status_code}")
32
        print(response.text)

Explicação:

  • ‘url’: URL do ponto de extremidade da API é construída
  • ‘cabeçalhos’: Os cabeçalhos são configurados, definindo o tipo de conteúdo e o token da API
  • resposta.status.código: Ajuda você a verificar se seu e-mail foi enviado com sucesso para a API de teste de e-mail.

Resumindo

Usar uma solução de API de e-mail confiável e segura permite que você envie e-mails mais rápido, sem aborrecimentos. Se você administra um negócio, uma API de e-mail ajudará você a automatizar o processo. Assim, você pode enviar e-mails altamente personalizados e em massa rapidamente com algumas linhas de código, como mencionamos acima.

Também recomendamos que você consulte a documentação do Python e a solução de API de e-mail que preferir. Continue experimentando novos códigos e explorando funcionalidades de envio de e-mail.

Deixe uma resposta