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:
- Abrindo sua conta de API de e-mail
- 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! You’ve 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 can’t 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! You’ve 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! You’ve 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:
- disposição_nova: Para indicar o arquivo como um anexo, o ‘disposition_new’ é definido como ‘Disposition.ATTACHMENT’.
- conteúdo_novo: Representa o conteúdo do arquivo codificado em base64
- 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! You’ve 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:
- Conecte-se ao cliente EtestAPI
- Defina o conteúdo do e-mail – assunto, texto, anexos (se houver), remetente e destinatário(s)
- 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,/nLet’s 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.