Mengirim email dengan SendGrid


Tutorial ini menunjukkan cara menggunakan SendGrid untuk mengirim email dari aplikasi yang berjalan pada instance virtual machine (VM) Compute Engine.

Tujuan

  • Menggunakan SendGrid dengan Postfix pada instance Compute Engine.
  • Gunakan SendGrid dalam kode Java yang berjalan di instance Compute Engine.
  • Gunakan SendGrid dalam kode Node.js yang berjalan di instance Compute Engine.
  • Menggunakan SendGrid dengan server transportasi edge Microsoft Exchange pada instance Compute Engine.

Untuk informasi lainnya tentang cara menyiapkan SendGrid, lihat dokumentasi developer SendGrid.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

  • Compute Engine

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Di konsol Google Cloud, buka halaman Buat instance.

    Buka Buat instance

  7. Tetapkan Name ke sendgrid-tutorial.
  8. Di bagian Boot disk, klik Ubah untuk mulai mengonfigurasi boot disk Anda.
  9. Di tab Public images, pilih a Debian or CentOS image version.
  10. Klik Pilih.
  11. Untuk membuat VM, klik Buat.
  12. Gunakan Google Cloud Marketplace untuk mendaftar ke layanan email SendGrid. Catat kredensial akun SMTP SendGrid Anda, yang mencakup nama pengguna, sandi, dan nama host. Nama pengguna dan sandi SMTP Anda sama dengan yang Anda gunakan untuk mendaftar ke layanan. Nama host SendGrid adalah smtp.sendgrid.net.
  13. Buat kunci API:
    1. Login ke SendGrid dan buka Settings > API Keys.
    2. Membuat Kunci API.
    3. Pilih izin untuk kunci tersebut. Setidaknya, kunci harus memiliki izin Pengiriman email untuk mengirim email.
    4. Klik Save untuk membuat kunci.
    5. SendGrid akan membuat kunci baru. Ini adalah satu-satunya salinan kunci, jadi pastikan Anda menyalin kunci dan menyimpannya untuk nanti.

Mengirim email dari instance Anda dengan Postfix

Selesaikan langkah-langkah berikut untuk terhubung ke instance sendgrid-tutorial dan menjalankan SendGrid dengan Postfix.

Menghubungkan ke instance sendgrid-tutorial menggunakan SSH

  1. Di konsol Google Cloud, buka halaman Instance VM.

    Buka VM instances

  2. Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.

Mengonfigurasi SendGrid sebagai relai SMTP dengan Postfix

Jalankan perintah berikut di terminal SSH untuk menggunakan SendGrid sebagai relai SMTP dengan Postfix.

  1. Menjadi superuser:

    sudo su -
    
  2. Setel umask yang aman:

    umask 077
    
  3. Instal Agen Transportasi Email Postfix:

    Debian

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

    CentOS

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

    Jika diminta, pilih konfigurasi Local Only dan terima nama domain default.

  4. Memodifikasi opsi konfigurasi Postfix. Buka /etc/postfix/main.cf untuk mengedit. Misalnya, untuk menggunakan editor teks nano, masukkan perintah berikut:

    nano /etc/postfix/main.cf
    
  5. Perbarui file:

    1. Jadikan baris berikut sebagai komentar:

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

      relayhost = [smtp.sendgrid.net]:2525
      smtp_tls_security_level = encrypt
      smtp_sasl_auth_enable = yes
      smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
      header_size_limit = 4096000
      smtp_sasl_security_options = noanonymous
      

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

  6. Simpan dan tutup file tersebut.

  7. Buat peta sandi SASL menggunakan kunci API yang Anda buat di bagian Sebelum memulai. Ganti your-api-key dengan kunci API yang Anda buat.

    echo [smtp.sendgrid.net]:2525 apikey:your-api-key >> /etc/postfix/sasl_passwd
  8. Gunakan utilitas postmap untuk menghasilkan file .db:

    postmap /etc/postfix/sasl_passwd
    
  9. Verifikasi bahwa Anda memiliki file .db:

    ls -l /etc/postfix/sasl_passwd*
    
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd.db
    
  10. Hapus file yang berisi kredensial Anda karena tidak lagi diperlukan:

    rm /etc/postfix/sasl_passwd
    
  11. Tetapkan izin pada file .db Anda dan pastikan file lainnya telah dihapus:

    chmod 600 /etc/postfix/sasl_passwd.db
    ls -la /etc/postfix/sasl_passwd*
    
    -rw------- 1 root root    ...  /etc/postfix/sasl_passwd.db
    
  12. Muat ulang konfigurasi Anda untuk memuat parameter yang diubah:

    Debian

    /etc/init.d/postfix restart
    

    CentOS

    postfix reload
    

  13. Instal paket mailutils atau mailx:

    Debian

    apt -y install mailutils

    CentOS

    yum install mailx -y
    

  14. Kirim email uji:

    echo 'message' | mail -s subject email@example.com

    Ganti kode berikut:

    • message: Isi email.
    • subject: Subjek email.
    • email@example.com: Alamat email yang ingin Anda kirimi pesan.

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

    Debian

    tail -n 5 /var/log/syslog
    

    CentOS

    tail -n 5 /var/log/maillog
    

Mengirim email dengan Java di instance Anda

Menghubungkan ke instance sendgrid-tutorial menggunakan SSH

  1. Di konsol Google Cloud, buka halaman Instance VM.

    Buka VM instances

  2. Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.

Membuat dan mengirim pesan email

Petunjuk berikut menggunakan library klien Java SendGrid untuk membuat dan mengirim pesan email melalui SendGrid. Anda dapat melihat contoh lengkapnya di GitHub.

Di terminal SSH Anda:

  1. Menjadi superuser dan menetapkan umask yang aman:

    sudo su -
    umask 077
    
  2. Instal Java dan Maven:

    apt -y update && apt -y install git-core openjdk-11-jdk maven
    
  3. Clone GitHub repo:

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    
  4. Buka kode sumber utama untuk contoh:

    cd /root/java-docs-samples/compute/sendgrid/src/main/java/com/example/compute/sendgrid
    
  5. Buka SendEmailServelet.java untuk mengedit.

    • Ganti your-sendgrid-api-key dengan kunci API untuk akun SendGrid Anda.

    • Ganti your-sendgrid-from-email dengan alamat email yang ingin Anda gunakan untuk mengirim email.

    • Ganti destination-email dengan alamat email yang ingin Anda kirimi email.

  6. Buka direktori root kode contoh tersebut:

    cd /root/java-docs-samples/compute/sendgrid
    
  7. Membuat class Java dalam paket:

    mvn clean package
    
  8. Buka direktori target baru:

    cd target
    
  9. Tetapkan izin yang memungkinkan Anda menjalankan file jar:

    chmod +x compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
    
  10. Menjalankan pemilih versi Java alternatif:

    update-alternatives --config java
    

    Pilih opsi java-11-openjdk-amd64.

  11. Jalankan file Java:

    java -jar compute-sendgrid-1.0-SNAPSHOT-jar-with-dependencies.jar
    

Mengirim email dengan Node.js di instance Anda

Untuk menjalankan contoh ini, Anda harus menginstal Node.js versi 7.6 atau yang lebih baru pada instance VM.[

Menghubungkan ke instance sendgrid-tutorial menggunakan SSH

  1. Di konsol Google Cloud, buka halaman Instance VM.

    Buka VM instances

  2. Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.

Membuat dan mengirim pesan email

Di terminal SSH Anda:

  1. Menjadi superuser dan menetapkan umask yang aman:

    sudo su -
    umask 077
    
  2. Perbarui repositori paket Anda:

    Debian

    apt update
    

    CentOS

    yum update -y
    

  3. Instal dependensi Node.js:

    Debian

    apt -y install git-core curl build-essential openssl libssl-dev
    

    CentOS

    yum install git-core curl openssl openssl-devel -y
    yum groupinstall "Development Tools" -y
    

  4. Instal Node.js. Secara default, penginstalan juga akan menginstal npm:

    Debian

    curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
    sudo apt -y install nodejs
    

    CentOS

    curl --silent --location https://rpm.nodesource.com/setup_14.x | bash -
    

    Kemudian, instal Node.js:

    yum -y install nodejs
    

  5. Instal klien SendGrid Node.js:

    npm install sendgrid
    
  6. Gandakan repositori sampel

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  7. Buka direktori yang berisi contoh SendGrid:

    cd nodejs-docs-samples/compute
    
  8. Salin file sendgrid.js:

    cp sendgrid.js sendmail.js
    
  9. Buka sendmail.js untuk mengedit.

    • Ganti your-sendgrid-api-key dengan kunci API untuk akun SendGrid Anda.

    • Ganti from-email@example.com dengan alamat email yang ingin Anda gunakan untuk mengirim email.

    • Ganti to-email@example.com dengan alamat email yang ingin Anda kirimi email.

    // This sample is based off of:
    // https://github.com/sendgrid/sendgrid-nodejs/tree/master/packages/mail
    const sendgrid = require('@sendgrid/mail');
    sendgrid.setApiKey(process.env.SENDGRID_API_KEY || '<your-sendgrid-api-key>');
    
    async function sendgridExample() {
      await sendgrid.send({
        to: 'to_email@example.com',
        from: 'from_email@example.com',
        subject: 'Sendgrid test email from Node.js on Google Cloud Platform',
        text: 'Well hello! This is a Sendgrid test email from Node.js on Google Cloud Platform.',
      });
    }
    sendgridExample();

  10. Jalankan program untuk mengirim pesan email melalui SendGrid:

    node sendmail.js
    

Mengirim email dari server transpor edge Exchange

Anda dapat menyiapkan Microsoft Exchange untuk mengirim email keluar menggunakan SendGrid dengan mengonfigurasi konektor pengiriman keluar. Untuk mengetahui detailnya, lihat Men-deploy Microsoft Exchange Server 2016 di Compute Engine.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus instance Compute Engine

Untuk menghapus instance Compute Engine:

  1. Di konsol Google Cloud, buka halaman Instance VM.

    Buka VM instances

  2. Pilih kotak centang untuk instance sendgrid-tutorial Anda.
  3. Untuk menghapus instance, klik Tindakan lainnya, klik Hapus, lalu ikuti petunjuknya.

Langkah selanjutnya

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