Panduan Lengkap Setup Email SMTP untuk Aplikasi Web
SMTP (Simple Mail Transfer Protocol) adalah protokol standar yang digunakan untuk mengirimkan email dari aplikasi web Anda (seperti form registrasi, reset password, atau notifikasi transaksi) ke kotak masuk pengguna.
Dalam panduan ini, kita akan membahas cara mendapatkan kredensial SMTP menggunakan layanan populer (Gmail & Mailgun) dan cara mengonfigurasinya di dalam kode aplikasi Node.js.
Metode 1: Menggunakan SMTP Gmail (Gratis & Mudah)
Gmail menyediakan server SMTP gratis yang bisa digunakan untuk mengirim email. Namun, karena alasan keamanan, Anda tidak bisa menggunakan password Gmail utama Anda langsung di dalam kode. Anda harus membuat App Password.
Langkah 1: Aktifkan 2-Step Verification
- Buka halaman pengaturan Google Account.
- Masuk ke menu Security (Keamanan).
- Di bagian "How you sign in to Google", pastikan 2-Step Verification (Verifikasi 2 Langkah) sudah dalam status Active (Aktif).
Langkah 2: Buat App Password
- Masuk ke menu 2-Step Verification yang sudah aktif tadi.
- Scroll ke bagian paling bawah dan pilih App passwords (Sandi aplikasi).
- Masukkan nama aplikasi Anda (misalnya: "Website ShiroKode") lalu klik Create.
- Salin kode rahasia 16 karakter yang muncul di layar. Kode inilah yang akan menjadi password SMTP Anda.
Detail Kredensial SMTP Gmail:
- SMTP Server/Host:
smtp.gmail.com - Port:
465(SSL) atau587(TLS) - Username: Alamat email Gmail Anda
- Password: 16 Karakter App Password yang baru dibuat
Metode 2: Menggunakan Layanan SMTP Pihak Ketiga (Mailgun / SendGrid)
Jika aplikasi Anda mengirimkan email dalam volume besar (ribuan email per hari), sangat disarankan menggunakan layanan SMTP profesional seperti Mailgun, SendGrid, atau Brevo agar email tidak masuk ke folder spam.
Langkah Setup (Secara Umum):
- Buat akun di platform penyedia (misalnya: Mailgun).
- Tambahkan domain website Anda (misalnya:
mail.domainkamu.com) ke dashboard mereka. - Lakukan verifikasi domain dengan menambahkan record TXT (SPF & DKIM) dan MX di pengatur DNS domain Anda (seperti di Cloudflare atau Niagahoster).
- Setelah terverifikasi, masuk ke menu SMTP Credentials di dashboard untuk membuat username dan password SMTP baru.
Langkah 3: Menghubungkan SMTP ke Aplikasi Node.js
Untuk mengirim email menggunakan SMTP di Node.js, library yang paling umum digunakan adalah Nodemailer.
1. Install Nodemailer
npm install nodemailer
2. Tulis Kode Pengiriman Email (mailer.js)
const nodemailer = require('nodemailer');
// 1. Konfigurasi Transporter SMTP
const transporter = nodemailer.createTransport({
host: 'smtp.gmail.com', // Ganti dengan host SMTP Anda jika non-Gmail
port: 465, // Gunakan 465 untuk SSL atau 587 untuk TLS
secure: true, // true untuk port 465, false untuk port 587
auth: {
user: 'email-anda@gmail.com',
pass: 'xxxx-xxxx-xxxx-xxxx' // Isi dengan App Password 16 karakter
}
});
// 2. Fungsi Kirim Email
const sendWelcomeEmail = async (toEmail, userName) => {
const mailOptions = {
from: '"ShiroKode Support" <email-anda@gmail.com>',
to: toEmail,
subject: 'Selamat Datang di ShiroKode! 🚀',
html: `
<div style="font-family: sans-serif; padding: 20px; background-color: #f1f5f9;">
<h2 style="color: #0f172a;">Halo ${userName},</h2>
<p style="color: #334155;">Akun Anda telah berhasil dibuat. Silakan login untuk mulai mengunduh script premium kami.</p>
<br />
<p style="color: #64748b;">Salam hangat,<br/>Tim ShiroKode</p>
</div>
`
};
try {
const info = await transporter.sendMail(mailOptions);
console.log('Email berhasil dikirim: %s', info.messageId);
} catch (error) {
console.error('Gagal mengirim email:', error);
}
};
module.exports = sendWelcomeEmail;
Tips Tambahan Pengelolaan SMTP
-
Selalu Amankan Kredensial: Jangan pernah melakukan hardcode password SMTP di dalam file script utama Anda. Selalu gunakan file .env untuk menyimpan data sensitif:
envSMTP_HOST=smtp.gmail.com SMTP_PORT=465 SMTP_USER=email-anda@gmail.com SMTP_PASS=xxxx-xxxx-xxxx-xxx -
Perhatikan Limitasi: Akun Gmail gratisan memiliki batas pengiriman maksimal 500 email per hari. Jika bisnis Anda bertambah besar, segera migrasi ke SMTP relay berbayar untuk menghindari pemblokiran akun.
