Email

Vercel पर ईमेल कैसे भेजें

Vercel पर आप HTTP API के ज़रिए ईमेल भेजते हैं, SMTP से नहीं।

Vercel पर आप HTTP API के ज़रिए ईमेल भेजते हैं, SMTP से नहीं। Vercel आपका कोड serverless और edge फ़ंक्शन में चलाता है, और ये रनटाइम शॉर्ट-लिव्ड HTTP रिक्वेस्ट हैंडलिंग के लिए बने हैं, लंबे TCP सॉकेट के लिए नहीं। Edge रनटाइम में तो Node का net मॉड्यूल ही नहीं है, इसलिए SMTP लाइब्रेरी कनेक्शन भी नहीं खोल सकती। किसी email API को HTTPS रिक्वेस्ट भेजना इस मॉडल में बिल्कुल सही बैठता है। यहाँ Next.js सेटअप दिया गया है।

Vercel पर SMTP ठीक से काम क्यों नहीं करता?

Serverless फ़ंक्शन तेज़ी से शुरू होने, रिक्वेस्ट हैंडल करने और बंद होने के लिए बने हैं। SMTP कनेक्शन खुला रखना (मल्टी-स्टेप हैंडशेक के साथ) इसके विपरीत है, और फ़ंक्शन बीच बातचीत में फ़्रीज़ या बंद हो सकता है। Edge रनटाइम और भी सख्त है: यह Node के नेटवर्किंग मॉड्यूल के बिना एक वेब-स्टैंडर्ड वातावरण चलाता है, इसलिए Nodemailer जैसी लाइब्रेरी जो net और tls पर निर्भर हैं, वहाँ बिल्कुल नहीं चलेंगी। HTTPS पर भेजने से दोनों समस्याएँ दूर हो जाती हैं, क्योंकि fetch ठीक वही है जो ये रनटाइम करने के लिए बने हैं।

Next.js Route Handler से ईमेल कैसे भेजें?

app/api/send/route.ts पर एक Route Handler बनाएँ। यह एक environment variable से API key पढ़ता है और email API को कॉल करता है। 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 });
}

Vercel प्रोजेक्ट के environment variables में BIRD_API_KEY सेट करें ताकि यह रनटाइम पर उपलब्ध रहे और कभी कमिट न हो। delivered@bird.dev sandbox पता हमेशा मेल स्वीकार करता है, जिससे पहला डिप्लॉय वेरिफ़ाई करना आसान हो जाता है।

Edge रनटाइम या Node रनटाइम?

export const runtime लाइन तय करती है कि आपका हैंडलर किस पर चले। क्योंकि SDK और fetch दोनों किसी भी रनटाइम में काम करते हैं, आप अपनी अन्य ज़रूरतों के अनुसार चुन सकते हैं:

Node रनटाइमEdge रनटाइम
डिफ़ॉल्टहाँऑप्ट-इन
Node APIs (net, fs)उपलब्धउपलब्ध नहीं
कोल्ड स्टार्टधीमातेज़
SMTP लाइब्रेरीचलती हैं, लेकिन serverless पर अविश्वसनीयबिल्कुल नहीं चल सकतीं
HTTP email API (fetch)काम करता हैकाम करता है

अगर आप केवल HTTP API कॉल करते हैं, तो Edge रनटाइम आपको तेज़ कोल्ड स्टार्ट देता है। अगर हैंडलर में कहीं और Node-only पैकेज की ज़रूरत है, तो Node पर रहें। दोनों में ईमेल भेजना वही fetch-आधारित कॉल है।

Bird से भेजें

ऊपर दिया हैंडलर पहले से canonical स्निपेट का उपयोग करता है। जहाँ भी आप 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();

अगर आप ईमेल बॉडी कंपोनेंट के रूप में बनाते हैं, तो React Email उन्हें इस कॉल के लिए ज़रूरी HTML में रेंडर करता है। ईमेल कोड कहाँ रखना चाहिए इसकी व्यापक तस्वीर के लिए JavaScript से ईमेल भेजना देखें।

FAQ

क्या मैं Vercel पर Nodemailer का उपयोग कर सकता हूँ?

Node रनटाइम पर यह लोड होगा, लेकिन शॉर्ट-लिव्ड serverless फ़ंक्शन पर SMTP कनेक्शन खुला रखना अविश्वसनीय है। Edge रनटाइम पर यह चल ही नहीं सकता, क्योंकि Node का net मॉड्यूल नहीं है। HTTP API से दोनों समस्याएँ दूर हो जाती हैं।

Vercel पर अपनी API key कहाँ रखें?

प्रोजेक्ट के environment variables में, Vercel डैशबोर्ड या CLI से सेट करें। हैंडलर इसे process.env से पढ़ता है, इसलिए यह सर्वर पर रहती है और आपकी रिपॉज़िटरी से बाहर।

ईमेल भेजने के लिए Edge या Node रनटाइम?

HTTP API कॉल के लिए दोनों काम करते हैं। Edge में कोल्ड स्टार्ट तेज़ है; अगर आपका हैंडलर Node-only पैकेज भी उपयोग करता है तो Node ज़रूरी है।

Vercel और HTTP email API एक स्वाभाविक जोड़ी है। ईमेल प्रोडक्ट ओवरव्यू और ईमेल भेजने की गाइड बाकी विषय कवर करते हैं।

पीक ट्रैफ़िक और बैकलॉग रिकवरी तय करते हैं कि आपके एप्लिकेशन को ट्रांज़ैक्शनल ईमेल सेवा से कितनी भेजने की क्षमता चाहिए।

व्यवहार में लाएँ।

इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।

अभ्यास करें और इम्प्लीमेंटेशन ब्रीफ़ पाएँ

उसी नेटवर्क पर बनाएँ।

एक टेस्ट API key आपको तुरंत मिल जाती है। भुगतान विधि जोड़ने और सेंडर सत्यापित करने पर प्रोडक्शन अनलॉक होता है।

आपका अगला आइडिया।
जुड़ने के लिए तैयार।