Como enviar e-mails com o Mailjet

Mailjet é um serviço de e-mail global de terceiros que oferece aos usuários do Google Compute Engine uma camada gratuita com 6.000 e-mails por mês. Além disso, ele também oferece:

  • interface do usuário, API e redirecionamento SMTP para envio de e-mails transacionais e de marketing;
  • conformidade européia de privacidade de dados;
  • recursos de e-mail e de entrega como configurações de prioridade personalizáveis e gerenciamento automático de controle de fluxo;
  • biblioteca de recursos de API em Go, PHP, Node.js, Java, Python e Ruby para gerenciar subcontas, autenticação, contatos, campanhas, payloads personalizados, estatísticas, eventos em tempo real e análises por meio da API Event;
  • framework MJML integrado, para criar modelos de e-mail HTML responsivos;
  • suporte 24 horas em mais de quatro idiomas;
  • capacidade de enviar e-mails de domínios diferentes de gmail.com.

Neste documento, descrevemos como configurar sua instância de VM para enviar mensagens por meio do Mailjet usando os seguintes métodos:

  • Por meio de um redirecionamento SMTP com:
  • Diretamente, por meio da API Mailjet, usando Java

Para documentação extensa de outras soluções de e-mail, incluindo exemplos de integração com a maioria dos servidores SMTP, bibliotecas e frameworks, consulte a documentação do Mailjet (em inglês).

Antes de começar

  1. Crie uma nova conta Mailjet na página de parceiros do Google*. Ao se inscrever, forneça o domínio e o endereço de e-mail pelo qual você quer enviar mensagens.

  2. Receba suas credenciais de conta SMTP do Mailjet.

  3. Verifique se o endereço de e-mail do qual você quer enviar e-mails foi validado pelo Mailgun.

  4. Configure uma regra de firewall para permitir tráfego TCP na porta 2525.

* O Google será compensado pelos clientes que se inscreverem para uma conta não gratuita.

Como configurar o Mailjet como um redirecionamento SMTP

Configurar o Mailjet para redirecionar e-mails permite encaminhar e-mails para o Mailjet para que sejam entregues remotamente.

Como usar o Postfix

  1. Conecte-se à sua instância usando SSH:

    gcloud compute ssh [INSTANCE_NAME]
    

    em que [INSTANCE_NAME] é o nome da instância da qual você quer enviar e-mails.

  2. Na instância da VM, instale o agente de transporte de e-mail do Postfix. Quando solicitado, aceite as opções padrão para os nomes de domínio, mas selecione a configuração Local Only.

    Debian


    sudo apt-get update && sudo apt-get install postfix libsasl2-modules -y
    

    CentOS


    sudo yum install postfix cyrus-sasl-plain cyrus-sasl-md5 -y
    

  3. Modifique as opções de configuração do Postfix. As opções de configuração do Postfix são definidas no arquivo main.cf. Abra o arquivo com o editor de texto da sua preferência:

    sudo vi /etc/postfix/main.cf
    
  4. Atualize o arquivo:

    1. Marque as seguintes linhas como comentários:

      # default_transport = error
      # relay_transport = error
      
    2. Adicione as seguintes linhas ao final do arquivo:

      relayhost = in.mailjet.com:2525
      smtp_tls_security_level = encrypt
      smtp_sasl_auth_enable = yes
      smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
      smtp_sasl_security_options = noanonymous
      

      Essas linhas aplicam o suporte SSL/TLS e configuram a autenticação SMTP dessas solicitações. Na configuração do Postfix, a autenticação é processada por um módulo de Camada simples de autenticação e segurança (SASL, na sigla em inglês).

    3. Salve as alterações e feche o arquivo.

  5. Crie o mapa de senha da SASL com o editor de texto da sua preferência:

    sudo vi /etc/postfix/sasl_passwd
    
  6. Para o arquivo sasl_passwd, adicione as seguintes linhas para fornecer as credenciais para o Mailjet:

    in.mailjet.com:2525 YOUR_API_KEY:YOUR_SECRET_KEY
    
  7. Use o utilitário postmap para gerar um arquivo .db:

    sudo postmap /etc/postfix/sasl_passwd
    sudo ls -l /etc/postfix/sasl_passwd*
    

    Você verá a seguinte resposta:

    -rw------- 1 root root    68 Jun  1 10:50 /etc/postfix/sasl_passwd
    -rw------- 1 root root 12288 Jun  1 10:51 /etc/postfix/sasl_passwd.db
    
  8. Depois, remova o arquivo que contém as suas credenciais uma vez que ele não é mais necessário:

    sudo rm /etc/postfix/sasl_passwd
    
  9. Defina as permissões no seu arquivo .db:

    sudo chmod 600 /etc/postfix/sasl_passwd.db
    sudo ls -la /etc/postfix/sasl_passwd.db
    
  10. Por fim, recarregue sua configuração para carregar os parâmetros modificados:

    Debian


    sudo /etc/init.d/postfix restart
    

    CentOS


    sudo postfix reload
    

  11. Teste sua configuração. Instale o pacote mailx ou o mailutils e teste a configuração.

    Debian


    sudo apt-get install mailutils -y
    

    CentOS


    sudo yum install mailx -y
    

    Envie uma mensagem de teste:

    echo 'Test passed.' | mail -s 'Test-Email' -aFrom:[FROM_EMAIL] [DESTINATION_EMAIL]
    

    em que:

    • [FROM_EMAIL] é um endereço de e-mail validado com o Mailgun;
    • [DESTINATION_EMAIL] é o endereço a que o e-mail será enviado.

    Nos registros do sistema, procure uma linha de status que contenha status e o código de resposta bem-sucedida do servidor (250):

    Debian


    sudo tail -n 5 /var/log/syslog
    

    CentOS


    sudo tail -n 5 /var/log/maillog
    

Se você tiver problemas ao configurar o Postfix com o Mailjet, consulte as instruções de configuração do Mailjet Postfix.

Como usar o Nodemailer

Nas instruções a seguir, há informações sobre como usar o Mailjet com Node.js no Debian Wheezy.

Debian
  1. Conecte-se à sua instância usando SSH:
    gcloud compute ssh [INSTANCE_NAME]
  2. Atualize os repositórios de pacotes:
    user@test-wheezy:~# sudo apt-get update
  3. Instale as dependências do Node.js:
    user@test-wheezy:~# sudo apt-get install git-core curl build-essential openssl libssl-dev -y
  4. Clone o repositório Node.js do github:
    user@test-wheezy:~# git clone https://github.com/nodejs/node
  5. Altere o diretório para a árvore de origem do Node.js:
    user@test-wheezy:~# cd node
  6. Configure o software do nó para este SO e máquina virtual:
    user@test-wheezy:~# ./configure
  7. Crie Node.js, npm e objetos afins:
    user@test-wheezy:~# sudo make

    Isso pode demorar alguns minutos.

  8. Instale Node.js, npm e outros softwares no local padrão:
    user@test-wheezy:~# sudo make install
  9. Instale o pacote do remetente:
    user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
  10. No diretório node, crie um novo arquivo denominado sendmail.js que contenha o JavaScript a seguir:
    const mailer = require('nodemailer');
    const smtp = require('nodemailer-smtp-transport');
    
    async function mailjet() {
      const transport = mailer.createTransport(
        smtp({
          host: 'in.mailjet.com',
          port: 2525,
          auth: {
            user: process.env.MAILJET_API_KEY || '<your-mailjet-api-key',
            pass: process.env.MAILJET_API_SECRET || '<your-mailjet-api-secret>',
          },
        })
      );
    
      const json = await transport.sendMail({
        from: 'ANOTHER_EMAIL@ANOTHER_EXAMPLE.COM', // From address
        to: 'EMAIL@EXAMPLE.COM', // To address
        subject: 'test email from Node.js on Google Cloud Platform', // Subject
        text: 'Hello!\n\nThis a test email from Node.js.', // Content
      });
      console.log(json);
    }
    mailjet();
  11. Execute o programa para enviar um e-mail via Mailjet:
    user@test-wheezy:~# node sendmail.js
CentOS
  1. Conecte-se à sua instância usando SSH:
    gcloud compute ssh [INSTANCE_NAME]
  2. Atualize os repositórios de pacotes:
    user@test-centos:~# sudo yum update -y
  3. Instale as dependências do Node.js:
    user@test-centos:~# sudo yum install git-core curl openssl openssl-dev -y
    ...
    user@test-centos:~# sudo yum groupinstall "Development Tools" -y
    ...
  4. Clone o repositório Node.js do github:
    user@test-centos:~# git clone https://github.com/nodejs/node
  5. Altere o diretório para a árvore de origem do Node.js:
    user@test-centos:~# cd node
  6. Configure o software do nó para este SO e máquina virtual:
    user@test-centos:~# ./configure
  7. Crie Node.js, npm e objetos afins:
    user@test-centos:~# sudo make

    Isso pode demorar alguns minutos.

  8. Instale Node.js, npm e outros softwares no local padrão:
    user@test-centos:~# sudo make install
  9. Instale o pacote do remetente:
    user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
  10. No diretório node, crie um novo arquivo denominado sendmail.js que contenha o JavaScript a seguir:
    const mailer = require('nodemailer');
    const smtp = require('nodemailer-smtp-transport');
    
    async function mailjet() {
      const transport = mailer.createTransport(
        smtp({
          host: 'in.mailjet.com',
          port: 2525,
          auth: {
            user: process.env.MAILJET_API_KEY || '<your-mailjet-api-key',
            pass: process.env.MAILJET_API_SECRET || '<your-mailjet-api-secret>',
          },
        })
      );
    
      const json = await transport.sendMail({
        from: 'ANOTHER_EMAIL@ANOTHER_EXAMPLE.COM', // From address
        to: 'EMAIL@EXAMPLE.COM', // To address
        subject: 'test email from Node.js on Google Cloud Platform', // Subject
        text: 'Hello!\n\nThis a test email from Node.js.', // Content
      });
      console.log(json);
    }
    mailjet();
  11. Execute o programa para enviar um e-mail via Mailjet:
    user@test-centos:~# node sendmail.js

Como enviar e-mails usando a API Mailjet com Java

Para mais exemplos de como usar a API Mailjet, consulte a documentação oficial do Mailjet (em inglês).

Debian
  1. Conecte-se à sua instância usando SSH:
    gcloud compute ssh [INSTANCE_NAME]
  2. Atualize seus repositórios de pacotes e instale os pacotes necessários:
    user@test-instance:~# sudo apt-get update && sudo apt-get install git-core openjdk-8-jdk maven
  3. Clone o repositório Java do GitHub:
    user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. Acesse o código-fonte principal para o exemplo, localizado em:
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. Ajuste suas configurações do Mailjet substituindo as seguintes variáveis:

    • YOUR-MAILJET-API-KEY por uma chave de API para sua conta Mailjet;
    • YOUR-MAILJET-SECRET-KEY pela chave secreta correspondente da sua conta Mailjet.

    public class MailjetSender {
    
      public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {
        final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
        final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
        MailjetClient client = new MailjetClient(
            mailjetApiKey, mailjetSecretKey, new ClientOptions("v3.1"));
    
        MailjetSender sender = new MailjetSender();
        sender.sendMailjet(args[0], args[1], client);
      }
    
      public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client)
            throws MailjetException, MailjetSocketTimeoutException {
        MailjetRequest email = new MailjetRequest(Emailv31.resource)
            .property(Emailv31.MESSAGES, new JSONArray()
            .put(new JSONObject()
              .put(Emailv31.Message.FROM, new JSONObject()
                .put("Email", sender)
                .put("Name", "pandora"))
              .put(Emailv31.Message.TO, new JSONArray()
                .put(new JSONObject()
                  .put("Email", recipient)))
              .put(Emailv31.Message.SUBJECT, "Your email flight plan!")
              .put(Emailv31.Message.TEXTPART,
                  "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
              .put(Emailv31.Message.HTMLPART,
                  "<h3>Dear passenger, welcome to Mailjet!</h3>"
                  + "<br />May the delivery force be with you!")));
    
        try {
          // trigger the API call
          MailjetResponse response = client.post(email);
          // Read the response data and status
          System.out.println(response.getStatus());
          System.out.println(response.getData());
          return response;
        } catch (MailjetException e) {
          System.out.println("Mailjet Exception: " + e);
          return null;
        }
      }
    }
  6. No diretório mailjet, use Maven para empacotar a classe como um arquivo JAR:
    user@test-instance:~# mvn clean package
  7. Verifique se você está usando o OpenJDK 8:
    user@test-instance:~# sudo update-alternatives --config java
  8. Para enviar um e-mail a partir do diretório de destino, execute o arquivo JAR com os endereços de e-mail do destinatário e do remetente como argumentos:
    user@test-instance:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]
CentOS
  1. Conecte-se à sua instância usando SSH:
    gcloud compute ssh [INSTANCE_NAME]
  2. Atualize seus repositórios de pacotes e instale os pacotes necessários:
    user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
  3. Clone o repositório Java do GitHub:
    user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. Acesse o código-fonte principal para o exemplo, localizado em:
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. Ajuste suas configurações do Mailjet substituindo as seguintes variáveis:

    • YOUR-MAILJET-API-KEY por uma chave de API para sua conta Mailjet;
    • YOUR-MAILJET-SECRET-KEY pela chave secreta correspondente da sua conta Mailjet.

    public class MailjetSender {
    
      public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {
        final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
        final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
        MailjetClient client = new MailjetClient(
            mailjetApiKey, mailjetSecretKey, new ClientOptions("v3.1"));
    
        MailjetSender sender = new MailjetSender();
        sender.sendMailjet(args[0], args[1], client);
      }
    
      public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client)
            throws MailjetException, MailjetSocketTimeoutException {
        MailjetRequest email = new MailjetRequest(Emailv31.resource)
            .property(Emailv31.MESSAGES, new JSONArray()
            .put(new JSONObject()
              .put(Emailv31.Message.FROM, new JSONObject()
                .put("Email", sender)
                .put("Name", "pandora"))
              .put(Emailv31.Message.TO, new JSONArray()
                .put(new JSONObject()
                  .put("Email", recipient)))
              .put(Emailv31.Message.SUBJECT, "Your email flight plan!")
              .put(Emailv31.Message.TEXTPART,
                  "Dear passenger, welcome to Mailjet! May the delivery force be with you!")
              .put(Emailv31.Message.HTMLPART,
                  "<h3>Dear passenger, welcome to Mailjet!</h3>"
                  + "<br />May the delivery force be with you!")));
    
        try {
          // trigger the API call
          MailjetResponse response = client.post(email);
          // Read the response data and status
          System.out.println(response.getStatus());
          System.out.println(response.getData());
          return response;
        } catch (MailjetException e) {
          System.out.println("Mailjet Exception: " + e);
          return null;
        }
      }
    }
  6. No diretório mailjet, use Maven para empacotar a classe como um arquivo JAR:
    user@test-centos:~# mvn clean package
  7. Verifique se você está usando o OpenJDK 8:
    user@test-centos:~# sudo alternatives --config java
  8. Para enviar um e-mail a partir do diretório de destino, execute o arquivo JAR com os endereços de e-mail do destinatário e do remetente como argumentos:
    user@test-centos:~# java -jar compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar [RECIPIENT_EMAIL] [SENDER_EMAIL]

Configurações de SMTP do Mailjet

Esta é uma referência rápida às configurações SMTP específicas para o Mailjet usadas para configurar clientes:

  • Host: in.mailjet.com
  • Porta: 2525

Teste outros recursos do Google Cloud Platform. Veja os tutoriais.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine