Para melhorar a segurança do email e garantir uma entrega de emails fiável e de grande volume, migre da API Mail antiga para um serviço de fornecedor de email de terceiros padrão que use o protocolo SMTP (Simple Mail Transfer Protocol), como o SendGrid, o Mailgun ou o Mailjet.
Este guia descreve o processo de migração de serviços de email enviados da API Mail para um serviço de email baseado em SMTP. Pode aplicar estas instruções para migrar para qualquer fornecedor de email de terceiros baseado em SMTP ou usar outro tempo de execução suportado. Este guia não fornece passos para migrar mensagens recebidas que usam uma alternativa de terceiros.
A norma SMTP oferece as seguintes vantagens em relação à API Mail do App Engine antigo:
Os serviços baseados em SMTP oferecem uma entrega de emails melhorada, reduzindo a probabilidade de os emails serem marcados como spam.
Com os serviços baseados em SMTP, pode aceder a relatórios de estatísticas detalhados sobre aberturas, cliques e rejeições de emails. Estes relatórios fornecem informações úteis sobre a forma como os utilizadores interagem com os seus emails.
Tem controlo total sobre a sua reputação do remetente e autenticação de email.
Limites de envio diários aumentados em comparação com a API Mail antiga, com acesso a funcionalidades avançadas, como testes A/B, segmentação e modelos.
Vista geral do processo de migração
O processo de migração inclui os seguintes passos:
- Configure o serviço de email baseado em SMTP para obter as suas credenciais SMTP.
- Valide a identidade do remetente para fazer a autenticação com o seu domínio ou endereço de email.
- Configure os ficheiros de origem com as suas credenciais SMTP e o método de envio e, em seguida, implemente a sua aplicação.
- Teste a sua aplicação para verificar a funcionalidade de email.
Configure o serviço de email baseado em SMTP
Configure uma conta com um fornecedor de email de terceiros padrão que use SMTP, como o SendGrid, o Mailgun ou o Mailjet, e obtenha as seguintes informações do fornecedor escolhido:
Anfitrião SMTP: o endereço do servidor SMTP usado para enviar correio. Por exemplo,
smtp.sendgrid.netouexample.mailjet.com.Porta: o número da porta para a ligação. Por exemplo,
587para encriptação TLS.Nome de utilizador: o nome de utilizador de início de sessão SMTP da sua conta.
Palavra-passe ou chave da API: a palavra-passe da sua conta ou uma chave da API, que funciona como a palavra-passe para a ligação SMTP. Para alguns fornecedores, como o SendGrid, o nome de utilizador é um valor fixo, como
apikey, e a chave da API é usada como palavra-passe.
Valide a sua identidade de remetente
Para evitar spam, todos os serviços de email exigem que valide que é o proprietário do endereço de email ou do domínio a partir do qual está a enviar emails. Este passo envolve frequentemente
adicionar detalhes de DNS específicos, como registos CNAME, à página de gestão de DNS do seu anfitrião de domínio.
Siga as instruções do seu fornecedor para validar a identidade do remetente antes de continuar com a configuração da aplicação.
Para adicionar registos de DNS ao seu anfitrião de domínio, siga estes passos:
- Inicie sessão no serviço do seu fornecedor DNS.
- Navegue para a página de gestão de DNS do seu domínio.
Adicione os registos CNAME exatamente como fornecidos pelo seu fornecedor de serviços de email. Para cada registo, faça o seguinte:
- No campo Nome ou Anfitrião, introduza os detalhes do anfitrião.
- No campo Pontos ou Valor, introduza o valor.
As alterações de DNS podem demorar algumas horas a ficarem ativas. Se a validação falhar, aguarde algum tempo e tente novamente.
Configure os ficheiros de origem
Para incluir a funcionalidade SMTP, siga estes passos:
Execute o seguinte comando para atualizar o App Engine SDK para a versão mais recente:
# Ensure your virtual environment is active pip install --upgrade appengine-python-standard # Save the new version to your requirements file pip freeze > requirements.txtAdicione o seguinte código ao ficheiro
app.yamlpara mudar para o serviço SMTP:runtime: RUNTIME # a supported python version env_variables: # Enable the SMTP service. APPENGINE_USE_SMTP_MAIL_SERVICE: "true" # --- SMTP Server Configuration --- # The server address from your mail provider APPENGINE_SMTP_HOST: "SMTP_HOST" # The recommended port for TLS connections APPENGINE_SMTP_PORT: "587" # The username for your SMTP login APPENGINE_SMTP_USER: "SMTP_USER" # The API key or password APPENGINE_SMTP_PASSWORD: "SMTP_PASSWORD" # Use TLS for a secure connection APPENGINE_SMTP_USE_TLS: "true" # --- For sending emails to Admins --- # A comma-separated list of admin email addresses. # This is required if you use the send_mail_to_admins() function. APPENGINE_ADMIN_EMAIL_RECIPIENTS: "admin@example.com,another-admin@example.com"Substitua o seguinte:
- RUNTIME: uma versão de tempo de execução do Python suportada.
- SMTP_HOST: o endereço do anfitrião SMTP. Por exemplo,
smtp.sendgrid.netouexample.mailjet.com. - SMTP_USER: o nome de utilizador de início de sessão SMTP da sua conta. Por exemplo,
apiKey. - SMTP_PASSWORD: a palavra-passe ou a chave da API que obteve do seu fornecedor de email de terceiros. Para melhorar a segurança, recomendamos que use o Secret Manager para armazenar a chave da API em vez de a colocar no ficheiro
app.yaml. - Se não usar a função
send_mail_to_admins(), omita a definiçãoAPPENGINE_ADMIN_EMAIL_RECIPIENTS.
Execute o seguinte comando para implementar a sua aplicação:
gcloud app deploy
Teste a sua aplicação
A migração é bem-sucedida se conseguir implementar a sua app sem erros. Para verificar se o seu serviço de correio está a funcionar, siga estes passos:
- Acione a parte da sua aplicação que envia um email.
- Verifique o Explorador de registos para se certificar de que não existem erros relacionados com as chamadas API ou a tentativa de ligação SMTP.
- Inicie sessão na conta do seu fornecedor de email de terceiros (por exemplo, Mailgun, Mailjet, SendGrid) e verifique o respetivo feed de atividade, registos ou painel de controlo de entrega. O seu email de teste deve aparecer no feed com um estado de entrega marcado como
Processed,Deliveredou semelhante.