Mengirim email dengan Mailjet


Mailjet adalah layanan email global pihak ketiga yang menawarkan paket gratis kepada pengguna Compute Engine dengan 6.000 email setiap bulan. Selain itu, Mailjet juga menawarkan:

  • API, antarmuka pengguna, dan relai SMTP untuk mengirim email transaksional dan pemasaran.
  • Kepatuhan terhadap privasi data di Eropa.
  • Fitur email dan pengiriman, seperti setelan prioritas yang dapat disesuaikan dan pengelolaan throttle otomatis.
  • Library resource API di Go, PHP, Nodejs, Java, Python, dan Ruby untuk mengelola sub-akun, autentikasi, kontak, kampanye, payload kustom, statistik, peristiwa real time, dan penguraian melalui Event API.
  • Framework MJML terintegrasi untuk membuat template email HTML yang responsif.
  • Dukungan follow-the-sun 24/7 dalam lebih dari 4 bahasa.
  • Kemampuan untuk mengirim pesan email dari domain selain gmail.com.

Dokumen ini menjelaskan cara mengonfigurasi instance VM Anda untuk mengirim email melalui Mailjet menggunakan metode berikut:

Untuk dokumentasi lengkap solusi email lainnya, termasuk contoh integrasi dengan server SMTP, library, dan framework yang paling umum, lihat dokumentasi Mailjet.

Sebelum memulai

  1. Buat akun Mailjet baru di halaman partner Google* Mailjet. Saat mendaftar, masukkan domain dan alamat email yang ingin Anda gunakan untuk mengirim pesan email.

  2. Dapatkan kredensial akun SMTP Mailjet.

  3. Pastikan alamat email yang ingin Anda gunakan untuk mengirim email telah divalidasi.

  4. Siapkan aturan firewall untuk mengizinkan traffic TCP di port 2525.

* Google menerima kompensasi untuk pelanggan yang mendaftar ke akun tidak gratis.

Mengonfigurasi Mailjet sebagai relai SMTP

Dengan mengonfigurasi Mailjet sebagai relai email, Anda dapat meneruskan pesan email ke Mailjet untuk pengiriman jarak jauh.

Menggunakan Postfix

  1. Hubungkan ke VM Anda menggunakan SSH, sehingga mengganti instance-name dengan nama instance tempat Anda ingin mengirim pesan email:

    gcloud compute ssh instance-name
  2. Di VM, instal Mail Transport Agent Postfix. Saat diminta, setujui pilihan default untuk nama domain, tetapi pilih konfigurasi Local Only.

    Debian

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

    CentOS

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

  3. Ubah opsi konfigurasi Postfix. Opsi konfigurasi postfix ditetapkan dalam file main.cf. Buka file dengan editor teks pilihan Anda:

    sudo vi /etc/postfix/main.cf
    
  4. Perbarui file:

    1. Jadikan baris berikut sebagai komentar:

      # default_transport = error
      # relay_transport = error
      
    2. Tambahkan baris berikut ke bagian akhir file:

      relayhost = in-v3.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
      

      Baris ini menerapkan dukungan SSL/TLS dan mengonfigurasi autentikasi SMTP untuk permintaan ini. Modul akses sederhana dan lapisan keamanan (SASL) menangani autentikasi dalam konfigurasi Postfix.

    3. Simpan perubahan Anda dan tutup file tersebut.

  5. Buat peta sandi SASL dengan editor teks pilihan Anda:

    sudo vi /etc/postfix/sasl_passwd
    
  6. Pada file sasl_passwd, tambahkan baris berikut guna memberikan kredensial untuk Mailjet:

    in-v3.mailjet.com:2525 YOUR_API_KEY:YOUR_SECRET_KEY
    
  7. Gunakan utilitas postmap untuk menghasilkan file .db:

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

    Anda akan menerima respons berikut:

    -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. Selanjutnya, hapus file yang berisi kredensial Anda karena sudah tidak diperlukan lagi:

    sudo rm /etc/postfix/sasl_passwd
    
  9. Tetapkan izin di file .db Anda:

    sudo chmod 600 /etc/postfix/sasl_passwd.db
    sudo ls -la /etc/postfix/sasl_passwd.db
    
  10. Terakhir, muat ulang konfigurasi Anda untuk memuat parameter yang diubah:

    Debian

    sudo /etc/init.d/postfix restart
    

    CentOS

    sudo postfix reload
    

  11. Uji konfigurasi Anda. Instal paket mailx atau mailutils dan uji konfigurasi Anda.

    Debian

    sudo apt -y install mailutils
    

    CentOS

    sudo yum install mailx -y
    

    Kirim pesan uji coba:

    echo 'Test passed.' | mail -s 'Test-Email' -aFrom:from-email destination-email

    Ganti kode berikut:

    • from-email: Alamat email yang telah divalidasi.
    • destination-email: Alamat tujuan untuk mengirim pesan email.

    Buka log sistem Anda untuk melihat baris status yang berisi status dan kode respons server yang berhasil (250):

    Debian

    sudo tail -n 5 /var/log/syslog
    

    CentOS

    sudo tail -n 5 /var/log/maillog
    

Jika Anda mengalami masalah saat menyiapkan Postfix dengan Mailjet, lihat petunjuk penyiapan Postfix Mailjet.

Menggunakan Nodemailer

Petunjuk berikut menjelaskan cara menggunakan Mailjet dengan Node.js di Debian Wheezy.

Debian
  1. Hubungkan ke instance menggunakan SSH:
    gcloud compute ssh instance-name
  2. Perbarui repositori paket Anda:
    user@test-wheezy:~# sudo apt update
  3. Instal dependensi Node.js:
    user@test-wheezy:~# sudo apt -y install git-core curl build-essential openssl libssl-dev
  4. Clone repo Node.js dari github:
    user@test-wheezy:~# git clone https://github.com/nodejs/node
  5. Ganti direktori ke hierarki sumber Node.js:
    user@test-wheezy:~# cd node
  6. Konfigurasikan software node untuk OS dan virtual machine ini:
    user@test-wheezy:~# ./configure
  7. Bangun Node.js, npm, dan objek terkait:
    user@test-wheezy:~# sudo make

    Proses ini dapat memerlukan waktu beberapa menit.

  8. Instal Node.js, npm, dan software lainnya di lokasi default:
    user@test-wheezy:~# sudo make install
  9. Instal paket mailer:
    user@test-wheezy:~# npm install nodemailer nodemailer-smtp-transport
  10. Di direktori node, buat file baru bernama sendmail.js yang berisi JavaScript berikut:
    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. Jalankan program untuk mengirim pesan email melalui Mailjet:
    user@test-wheezy:~# node sendmail.js
CentOS
  1. Hubungkan ke instance menggunakan SSH:
    gcloud compute ssh instance-name
  2. Update repositori paket:
    user@test-centos:~# sudo yum update -y
  3. Instal dependensi 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 repositori Node.js dari github:
    user@test-centos:~# git clone https://github.com/nodejs/node
  5. Ganti direktori ke hierarki sumber Node.js:
    user@test-centos:~# cd node
  6. Konfigurasikan software node untuk OS dan virtual machine ini:
    user@test-centos:~# ./configure
  7. Bangun Node.js, npm, dan objek terkait:
    user@test-centos:~# sudo make

    Proses ini dapat memerlukan waktu beberapa menit.

  8. Instal Node.js, npm, dan software lainnya di lokasi default:
    user@test-centos:~# sudo make install
  9. Instal paket mailer:
    user@test-centos:~# npm install npm install nodemailer nodemailer-smtp-transport
  10. Di direktori node, buat file baru bernama sendmail.js yang berisi JavaScript berikut:
    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. Jalankan program untuk mengirim pesan email melalui Mailjet:
    user@test-centos:~# node sendmail.js

Mengirim email melalui API Mailjet dengan Java

Untuk contoh penggunaan Mailjet API lainnya, lihat dokumentasi Mailjet resmi.

Debian
  1. Hubungkan ke instance menggunakan SSH:
    gcloud compute ssh instance-name
  2. Perbarui repositori paket Anda dan instal paket yang diperlukan:
    user@test-instance:~# sudo apt update && sudo apt install git-core openjdk-8-jdk maven
  3. Clone repo Java dari GitHub:
    user@test-instance:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. Buka kode sumber utama untuk menemukan contoh, yang terletak di:
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. Konfigurasikan setelan Mailjet Anda. Lihat dokumentasi Autentikasi Mailjet tentang cara mengganti variabel berikut:

    • your-mailjet-api-key: Kunci API untuk akun Mailjet Anda.
    • your-mailjet-secret-key: Kunci rahasia yang sesuai untuk akun Mailjet Anda.

    public class MailjetSender {
    
      public static void main(String[] args) throws MailjetException {
        final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
        final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
        ClientOptions options =
            ClientOptions.builder().apiKey(mailjetApiKey).apiSecretKey(mailjetSecretKey).build();
        MailjetClient client = new MailjetClient(options);
    
        MailjetSender sender = new MailjetSender();
        sender.sendMailjet(args[0], args[1], client);
      }
    
      public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client)
          throws MailjetException {
        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. Dari direktori mailjet, gunakan Maven untuk mengemas class sebagai file JAR:
    user@test-instance:~# mvn clean package
  7. Pastikan Anda menggunakan OpenJDK 8:
    user@test-instance:~# sudo update-alternatives --config java
  8. Untuk mengirim email: dari direktori target, jalankan file JAR dengan alamat email penerima dan pengirim sebagai argumen:
    user@test-instance:~# java -jar
            compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar
            recipient-email sender-email
CentOS
  1. Hubungkan ke instance menggunakan SSH:
    gcloud compute ssh instance-name
  2. Perbarui repositori paket Anda dan instal paket yang diperlukan:
    user@test-centos:~# sudo yum update && sudo yum install git-core openjdk-8-jdk maven
  3. Clone repo Java dari GitHub:
    user@test-centos:~# git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
  4. Buka kode sumber utama untuk menemukan contoh, yang terletak di:
    /root/java-docs-samples/compute/mailjet/src/main/java/com/example/compute/mailjet
  5. Konfigurasikan setelan Mailjet Anda. Untuk informasi tentang cara mengganti variabel berikut, lihat dokumentasi Autentikasi Mailjet:

    • your-mailjet-api-key: Kunci API untuk akun Mailjet Anda.
    • your-mailjet-secret-key: Kunci rahasia yang sesuai untuk akun Mailjet Anda.

    public class MailjetSender {
    
      public static void main(String[] args) throws MailjetException {
        final String mailjetApiKey = "YOUR-MAILJET-API-KEY";
        final String mailjetSecretKey = "YOUR-MAILJET-SECRET-KEY";
        ClientOptions options =
            ClientOptions.builder().apiKey(mailjetApiKey).apiSecretKey(mailjetSecretKey).build();
        MailjetClient client = new MailjetClient(options);
    
        MailjetSender sender = new MailjetSender();
        sender.sendMailjet(args[0], args[1], client);
      }
    
      public MailjetResponse sendMailjet(String recipient, String sender, MailjetClient client)
          throws MailjetException {
        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. Dari direktori mailjet, gunakan Maven untuk mengemas class sebagai file JAR:
    user@test-centos:~# mvn clean package
  7. Pastikan Anda menggunakan OpenJDK 8:
    user@test-centos:~# sudo alternatives --config java
  8. Untuk mengirim email, dari direktori target, jalankan file JAR dengan alamat email penerima dan pengirim sebagai argumen:
    user@test-centos:~# java -jar
            compute-mailjet-1.0-SNAPSHOT-jar-with-dependencies.jar
            recipient-email sender-email

Setelan SMTP Mailjet

Berikut adalah referensi cepat untuk setelan SMTP khusus Mailjet yang digunakan untuk mengonfigurasi klien:

  • Host: in-v3.mailjet.com
  • Port: 2525

Langkah berikutnya

Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.