Como enviar e-mails com 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 europeia 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;
  • biblioteca MJML integrada, para criar modelos de e-mail HTML responsivos;
  • suporte 24 horas por dia, 7 dias por semana, em mais de 4 idiomas;
  • capacidade de enviar e-mails para domínios diferentes de gmail.com.

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.

Depois, siga alguns dos exemplos abaixo para configurar sua conta de e-mail. 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.

Como configurar o redirecionamento com Postfix

A configuração do Mailjet como redirecionador de e-mails possibilita o encaminhamento de e-mails destinados a entregas remotas via Postfix.

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

    gcloud compute ssh INSTANCE
    
  2. 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


    user@test-instance:~# sudo apt-get update && sudo apt-get install postfix libsasl2-modules -y
    

    CentOS


    user@test-instance:~# 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:

    user@test-instance:~# sudo vi /etc/postfix/main.cf
    
  4. Se existirem, comente as seguintes linhas:

    # default_transport = error
    # relay_transport = error
    
  5. Para adicionar o serviço SMTP do Mailjet, inclua a seguinte linha ao final do arquivo:

    relayhost = in.mailjet.com:2525
    
  6. Depois, adicione as seguintes linhas para aplicar o suporte SSL/TLS e configurar a autenticação SMTP para essas 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). Adicione estas linhas ao final do arquivo:

    smtp_tls_security_level = encrypt
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
    smtp_sasl_security_options = noanonymous
    

    Salve suas alterações e feche o arquivo.

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

    user@test-instance:~# sudo vi /etc/postfix/sasl_passwd
    
  8. Para o arquivo sasl_passwd, adicione as seguintes linhas para fornecer as credenciais para o Mailjet:

    in.mailjet.com:2525 YOUR_SMTP_KEY:YOUR_SMTP_SECRET
    
  9. Use o utilitário postmap para gerar um arquivo .db:

    user@test-instance:~# sudo postmap /etc/postfix/sasl_passwd
    user@test-instance:~# sudo ls -l /etc/postfix/sasl_passwd*
    -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
    
  10. Depois, remova o arquivo que contém as suas credenciais uma vez que ele não é mais necessário:

    user@test-instance:~# sudo rm /etc/postfix/sasl_passwd
    
  11. Defina as permissões no seu arquivo .db:

    user@test-instance:~# sudo chmod 600 /etc/postfix/sasl_passwd.db
    user@test-instance:~# sudo ls -la /etc/postfix/sasl_passwd.db
    -rw------- 1 root root 12288 Aug 31 18:51 /etc/postfix/sasl_passwd.db
    
  12. Por fim, recarregue sua configuração para carregar os parâmetros modificados:

    Debian


    user@test-wheezy:~# sudo /etc/init.d/postfix restart
    

    CentOS


    [user@test-centos ~]# sudo postfix reload
    

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

    Debian


    user@test-wheezy:~# sudo apt-get install mailutils -y
    

    CentOS


    [user@test-centos ~]# sudo yum install mailx -y
    

    Envie uma mensagem de teste:

     user@test-instance:~# echo 'Test passed.' | mail -s Test-Email EMAIL@EXAMPLE.COM
    

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

    Debian


    user@test-wheezy:~# sudo tail -n 5 /var/log/syslog
    

    CentOS


    [user@test-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 enviar e-mails com Java

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]

Como enviar e-mails com Node.js

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 chamado 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);
    }
  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 chamado 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);
    }
  11. Execute o programa para enviar um e-mail via Mailjet:
    user@test-centos:~# node sendmail.js

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

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

Conheça outros recursos do Google Cloud Platform. Veja nossos tutoriais.

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

Enviar comentários sobre…

Documentação do Compute Engine