Migrar da API App Engine Mail para um serviço baseado em SMTP

Para melhorar a segurança do e-mail e garantir a entrega confiável de e-mails em grande volume, migre da API Mail legada para um serviço de provedor de e-mail terceirizado padrão que usa o Simple Mail Transfer Protocol (SMTP), como SendGrid, Mailgun ou Mailjet.

Este guia descreve o processo de migração de serviços de e-mail enviados da API Mail para um serviço de e-mail baseado em SMTP. Você pode aplicar essas instruções para migrar para qualquer provedor de e-mail terceirizado baseado em SMTP ou usar outro ambiente de execução compatível. Este guia não fornece etapas para migrar mensagens recebidas que usam uma alternativa de terceiros.

O padrão SMTP oferece os seguintes benefícios em relação à API Mail legada do App Engine:

  • Os serviços baseados em SMTP melhoram a entrega de e-mails, reduzindo a probabilidade de que as mensagens sejam marcadas como spam.

  • Com os serviços baseados em SMTP, você pode acessar relatórios de análise detalhados sobre aberturas, cliques e devoluções de e-mails. Esses relatórios fornecem informações úteis sobre como os usuários interagem com seus e-mails.

  • Você tem controle total sobre a reputação do remetente e a autenticação de e-mail.

  • Limites de envio diário aumentados em comparação com a API Mail legada com acesso a recursos avançados, como testes A/B, segmentação e modelos.

Visão geral do processo de migração

O processo de migração inclui as seguintes etapas:

  1. Configure o serviço de e-mail baseado em SMTP para receber suas credenciais de SMTP.
  2. Verifique a identidade do remetente para autenticar com seu domínio ou endereço de e-mail.
  3. Configure seus arquivos de origem com as credenciais de SMTP e o método de envio e implante o aplicativo.
  4. Teste o aplicativo para verificar a funcionalidade de e-mail.

Configurar o serviço de e-mail baseado em SMTP

Configure uma conta com um provedor de e-mail terceirizado padrão que usa SMTP, como SendGrid, Mailgun ou Mailjet, e recupere as seguintes informações do provedor escolhido:

  • Host SMTP: o endereço do servidor SMTP usado para enviar e-mails. Por exemplo, smtp.sendgrid.net ou example.mailjet.com.

  • Porta: o número da porta da conexão. Por exemplo, 587 para criptografia TLS.

  • Nome de usuário: o nome de usuário de login SMTP da sua conta.

  • Senha ou chave de API: a senha da sua conta ou uma chave de API, que atua como a senha da conexão SMTP. Para alguns provedores, como o SendGrid, o nome de usuário é um valor fixo, como apikey, e a chave de API é usada como senha.

Verificar a identidade do remetente

Para evitar spam, todos os serviços de e-mail exigem que você verifique se é o proprietário do endereço de e-mail ou do domínio de que está enviando e-mails. Essa etapa geralmente envolve a adição de detalhes específicos de DNS, como registros CNAME, à página de gerenciamento de DNS do host de domínio.

Siga as instruções do provedor para verificar a identidade do remetente antes de continuar com a configuração do aplicativo.

Para adicionar registros DNS ao host de domínio, siga estas etapas:

  1. Faça login no serviço do provedor de DNS.
  2. Acesse a página de gerenciamento de DNS do seu domínio.
  3. Adicione os registros CNAME exatamente como fornecidos pelo provedor de serviços de e-mail. Para cada registro, faça o seguinte:

    • No campo Nome ou Host, insira os detalhes do host.
    • No campo Aponta para ou Valor, insira o valor.

As mudanças de DNS podem levar algumas horas para serem ativadas. Se a verificação falhar, aguarde um pouco e tente de novo.

Configurar os arquivos de origem

Para incluir a funcionalidade SMTP, siga estas etapas:

  1. Execute o comando abaixo para instalar o Maven:

    sudo apt install maven
    
  2. Adicione o código abaixo ao arquivo pom.xml para mudar para o serviço SMTP:

    1. Adicione a versão da dependência appengine-api-1.0-sdk:

       <dependency>
         <groupId>com.google.appengine</groupId>
         <artifactId>appengine-api-1.0-sdk</artifactId>
         <version>5.0.0</version>
       </dependency>
      
    2. Atualize o ID do projeto:

        <configuration>
          <deploy.projectId>PROJECT-ID</deploy.projectId>
          <deploy.version>1</deploy.version>
        </configuration>
      

      Substitua PROJECT-ID pelo Google Cloud ID do projeto.

  3. Adicione as seguintes variáveis de ambiente ao arquivo appengine-web.xml para incluir as configurações do remetente SMTP:

    ...
    <runtime>RUNTIME</runtime>
    <service>default</service>
    <threadsafe>true</threadsafe>
    <app-engine-apis>true</app-engine-apis>
    <env-variables>
    <!-- This is the master switch to enable the SMTP service.-->
    <env-var name="APPENGINE_USE_SMTP_MAIL_SERVICE" value="true" />
    <!-- SMTP Server Configuration -->
    <!-- The server address from your mail provider.-->
    <env-var name="APPENGINE_SMTP_HOST" value="SMTP_HOST" />
    <!-- The recommended port for TLS connections. -->
    <env-var name="APPENGINE_SMTP_PORT" value="587" />
    <!-- The username for your SMTP login. -->
    <env-var name="APPENGINE_SMTP_USER" value="SMTP_USER" />
    <!-- The API key or password -->
    <env-var name="APPENGINE_SMTP_PASSWORD" value="SMTP_PASSWORD" />
    <!--  Use TLS for a secure connection. -->
    <env-var name="APPENGINE_SMTP_USE_TLS" value="true" />
    </env-variables>
    ...
    </appengine-web-app>
    

    Substitua:

    • RUNTIME: uma versão compatível do ambiente de execução Java.
    • SMTP_HOST: o endereço do host SMTP. Por exemplo, smtp.sendgrid.net ou example.mailjet.com.
    • SMTP_USER: o nome de usuário de login SMTP da sua conta. Por exemplo, apiKey.
    • SMTP_PASSWORD: a senha ou chave de API que você recebeu do provedor de e-mail terceirizado. Para melhorar a segurança, recomendamos que você use o Secret Manager para armazenar a chave de API em vez de colocá-la no arquivo appengine-web.xml.
  4. Execute o comando abaixo para implantar seu aplicativo:

    mvn package appengine:deploy
    

Testar o aplicativo

A migração será bem-sucedida se você conseguir implantar o app sem erros. Para verificar se o serviço de e-mail está funcionando, siga estas etapas:

  1. Acione a parte do aplicativo que envia um e-mail.
  2. Verifique a Análise de registros para garantir que não haja erros relacionados às chamadas de API ou à tentativa de conexão SMTP.
  3. Faça login na conta do provedor de e-mail terceirizado (por exemplo, Mailgun, Mailjet, SendGrid) e verifique o feed de atividades, os registros ou o painel de entrega. O e-mail de teste vai aparecer no feed com um status de entrega marcado como Processed, Delivered ou semelhante.

A seguir