Cara mengirim email di Vercel

Di Vercel, kirim email melalui HTTP API di Node.js atau Edge, atau await SMTP di fungsi Node.js.

HTTP email API berfungsi di runtime Node.js maupun Edge milik Vercel dan merupakan jalur yang direkomendasikan Vercel. SMTP dapat berfungsi di Node.js jika Anda meng-await pengiriman dalam batas eksekusi fungsi. Ia tidak dapat berjalan di Edge, yang tidak memiliki modul TCP Node.

Apa yang dibutuhkan SMTP di Vercel?

Di fungsi Node.js, await pengiriman SMTP sebelum mengembalikan respons agar pertukaran selesai sebelum fungsi berhenti. Pengiriman harus selesai dalam batas durasi fungsi. Vercel mengizinkan SMTP keluar di port 465 dan 587; port 25 diblokir. Edge tidak memiliki modul net Node.js, sehingga pustaka SMTP tidak dapat membuka koneksi TCP di sana.

Bagaimana cara mengirim email dari Next.js Route Handler?

Buat Route Handler di app/api/send/route.ts. Handler ini membaca kunci API dari environment variable dan memanggil API email. Menggunakan Bird Node SDK:

// app/api/send/route.ts
import { BirdClient } from "@messagebird/sdk";

export const runtime = "nodejs";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

export async function POST(request: Request) {
  const { to } = await request.json();

  const { data, error } = await bird.email
    .send({
      from: "you@yourdomain.com",
      to: [to ?? "delivered@bird.dev"],
      subject: "Hello from Node",
      html: "<p>It works.</p>",
    })
    .safe();

  if (error) {
    return Response.json({ error: error.message }, { status: 502 });
  }

  return Response.json({ id: data.id });
}

Atur BIRD_API_KEY di environment variable proyek Vercel agar tersedia saat runtime dan tidak pernah di-commit. Alamat sandbox delivered@bird.dev selalu menerima email, sehingga deploy pertama mudah diverifikasi.

Edge runtime atau Node runtime?

Baris export const runtime menentukan runtime mana yang menjalankan handler Anda. Karena SDK dan fetch keduanya bekerja di kedua runtime, Anda bisa memilih berdasarkan kebutuhan lain:

Runtime NodeEdge runtime
DefaultYaOpt-in
Node API (net, fs)TersediaTidak tersedia
Cold startLebih lambatLebih cepat
Library SMTPAwait dalam batas durasiTidak bisa berjalan sama sekali
HTTP email API (fetch)BerfungsiBerfungsi

Jika Anda hanya memanggil HTTP API, Edge runtime memberikan cold start yang lebih cepat. Jika Anda bergantung pada paket khusus Node di bagian lain handler, tetap gunakan Node. Bagaimanapun, pengiriman email tetap berupa panggilan berbasis fetch yang sama.

Kirim dengan Bird

Handler di atas sudah menggunakan cuplikan kanonik. Bentuknya sama di mana pun Anda menjalankan JavaScript:

import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.email
  .send({
    from: "you@yourdomain.com",
    to: ["delivered@bird.dev"],
    subject: "Hello from Node",
    html: "<p>It works.</p>",
  })
  .safe();

Jika Anda membangun isi email sebagai komponen, React Email me-render-nya menjadi HTML yang diharapkan oleh panggilan ini. Untuk gambaran lebih luas tentang posisi kode email, lihat mengirim email dengan JavaScript.

FAQ

Bisakah saya menggunakan Nodemailer di Vercel?

Ya, di fungsi Node.js: await pengiriman sebelum mengembalikan respons, dan selesaikan dalam batas durasi fungsi. Nodemailer tidak dapat berjalan di Edge karena runtime tersebut tidak memiliki modul net Node.

Di mana saya menyimpan kunci API di Vercel?

Di environment variable proyek, yang diatur melalui dashboard Vercel atau CLI. Handler membacanya dengan process.env, sehingga tetap berada di server dan tidak masuk ke repositori Anda.

Edge atau Node runtime untuk mengirim email?

Keduanya berfungsi untuk panggilan HTTP API. Edge memiliki cold start lebih cepat; Node diperlukan jika handler Anda juga menggunakan paket khusus Node.

Vercel dan HTTP email API adalah pasangan yang alami. Gambaran umum produk email dan panduan mengirim email mencakup sisa topiknya.

Lalu lintas puncak dan pemulihan antrean menentukan kapasitas pengiriman yang dibutuhkan aplikasi Anda dari layanan email transaksional.

Bangun di jaringan yang sama.

Kunci API uji coba langsung tersedia untuk Anda. Akses produksi terbuka saat Anda menambahkan metode pembayaran dan memverifikasi pengirim.

Ide Anda berikutnya. Siap terhubung.