आधुनिक वेब अनुप्रयोगों के लिए ईमेल सूचनाएं महत्वपूर्ण हैं। इस गाइड में, हम Express.js और Gmail के OAuth2 प्रमाणीकरण का उपयोग करके एक सुरक्षित ईमेल अधिसूचना सेवा बनाएंगे। हमारी सेवा वेबहुक अनुरोध स्वीकार करेगी और आने वाले डेटा के आधार पर स्वचालित रूप से ईमेल भेजेगी।
हम एक एक्सप्रेस सर्वर बनाएंगे जो:
सबसे पहले, आवश्यक पैकेज स्थापित करें:
npm install express body-parser nodemailer googleapis dotenv
अपने क्रेडेंशियल्स के साथ एक .env फ़ाइल बनाएं:
CLIENT_ID=your_client_id CLIENT_SECRET=your_client_secret REDIRECT_URI=your_redirect_uri REFRESH_TOKEN=your_refresh_token [email protected]
यदि आपको इन क्रेडेंशियल्स को सेट करने में कोई कठिनाई आती है, जैसा कि मैंने किया, तो आप नीचे दिए गए चरणों का पालन कर सकते हैं...
चरण-1: एक नया Google क्लाउड प्रोजेक्ट बनाएं:
एक। https://console.cloud.google.com/
पर जाएं
बी। पृष्ठ के शीर्ष पर प्रोजेक्ट ड्रॉपडाउन पर क्लिक करें
सी। "नया प्रोजेक्ट" पर क्लिक करें
डी। प्रोजेक्ट का नाम दर्ज करें और "बनाएँ" पर क्लिक करें
चरण-2: जीमेल एपीआई सक्षम करें:
एक। बाएँ साइडबार में, "एपीआई और सेवाएँ" > "लाइब्रेरी"
पर जाएँ
बी। "जीमेल एपीआई" खोजें
सी। "जीमेल एपीआई" पर क्लिक करें और फिर "सक्षम करें" पर क्लिक करें
चरण-3: OAuth सहमति स्क्रीन कॉन्फ़िगर करें:
एक। "एपीआई और सेवाएँ" > "OAuth सहमति स्क्रीन" पर जाएँ
बी। उपयोगकर्ता प्रकार के रूप में "बाहरी" चुनें और "बनाएँ" पर क्लिक करें
सी। आवश्यक फ़ील्ड भरें:
- ऐप का नाम: [आपका ऐप नाम]
- उपयोगकर्ता सहायता ईमेल: [आपका ईमेल]
- डेवलपर संपर्क जानकारी: [आपका ईमेल]
डी। "सहेजें और जारी रखें" पर क्लिक करें
ई. "स्कोप्स" पृष्ठ पर, "स्कोप्स जोड़ें या निकालें" पर क्लिक करें
एफ। "https://mail.google.com/" स्कोप ढूंढें और चुनें
जी। "अपडेट करें" पर क्लिक करें और फिर "सहेजें और जारी रखें" पर क्लिक करें
एच। "परीक्षण उपयोगकर्ता" पृष्ठ पर, "उपयोगकर्ता जोड़ें" पर क्लिक करें
मैं। अपना जीमेल पता जोड़ें और "सहेजें और जारी रखें" पर क्लिक करें
जे। सारांश की समीक्षा करें और "डैशबोर्ड पर वापस जाएं" पर क्लिक करें
चरण-4: OAuth2 क्रेडेंशियल बनाएं:
एक। "एपीआई और सेवाएँ" > "क्रेडेंशियल्स" पर जाएँ
बी। "क्रेडेंशियल बनाएं" > "OAuth क्लाइंट आईडी" पर क्लिक करें
सी। एप्लिकेशन प्रकार के रूप में "वेब एप्लिकेशन" चुनें
डी। नाम: [आपका ऐप नाम]
ई. अधिकृत जावास्क्रिप्ट उत्पत्ति: अपने सर्वर का डोमेन जोड़ें (उदाहरण के लिए, स्थानीय विकास के लिए http://localhost:3000)
एफ। अधिकृत रीडायरेक्ट यूआरआई:
- जोड़ें: https://developers.google.com/oauthplayground
- यदि आपके पास अपने सर्वर का कॉलबैक यूआरएल है तो उसे जोड़ें (उदाहरण के लिए, http://localhost:3000/auth/google/callback)
जी। "बनाएँ" पर क्लिक करें
एच। एक पॉपअप आपकी क्लाइंट आईडी और क्लाइंट सीक्रेट दिखाएगा। इन्हें सुरक्षित रूप से सहेजें।
चरण-5: एक नया ताज़ा टोकन प्राप्त करें:
एक। https://developers.google.com/oauthplayground/
बी। ऊपरी दाएं कोने में गियर आइकन (सेटिंग्स की तरह) पर क्लिक करें
सी। चेक बॉक्स "अपने स्वयं के OAuth क्रेडेंशियल का उपयोग करें" पर क्लिक करें
डी। अपनी नई क्लाइंट आईडी और क्लाइंट सीक्रेट दर्ज करें
ई. सेटिंग्स बंद करें
एफ। बाएं साइडबार में, "जीमेल एपीआई v1"
ढूंढें
जी। https://mail.google.com/
चुनें
एच। "एपीआई अधिकृत करें" पर क्लिक करें
मैं। अपना Google खाता चुनें और अनुरोधित अनुमतियाँ प्रदान करें
जे। अगली स्क्रीन पर, "टोकन के लिए एक्सचेंज प्राधिकरण कोड" पर क्लिक करें
के. प्रतिक्रिया से "रीफ्रेश टोकन" कॉपी करें
यदि इस प्रक्रिया के दौरान या ईमेल कार्यक्षमता का परीक्षण करते समय आपको कोई समस्या आती है, तो कृपया विशिष्ट त्रुटि संदेश या व्यवहार प्रदान करें जो आप टिप्पणियों में देख रहे हैं।
आइए कार्यान्वयन को चरण दर चरण तोड़ें:
const express = require("express"); const bodyParser = require("body-parser"); const nodemailer = require("nodemailer"); const { google } = require("googleapis"); require("dotenv").config(); const app = express(); app.use(bodyParser.json());
यह अनुभाग हमारे एक्सप्रेस सर्वर को सेट करता है और आवश्यक निर्भरताएँ आयात करता है। हम JSON अनुरोधों को पार्स करने के लिए बॉडी-पार्सर का उपयोग करते हैं और पर्यावरण चर प्रबंधित करने के लिए dotenv का उपयोग करते हैं।
const oAuth2Client = new google.auth.OAuth2( CLIENT_ID, CLIENT_SECRET, REDIRECT_URI ); oAuth2Client.setCredentials({ refresh_token: REFRESH_TOKEN });
हम Google की प्रमाणीकरण लाइब्रेरी का उपयोग करके एक OAuth2 क्लाइंट बनाते हैं। यह जीमेल के एपीआई के साथ टोकन रिफ्रेश और प्रमाणीकरण को संभालता है।
async function sendEmail(webhookData) { const { receiver_email, //change data based on your needs } = webhookData; try { const accessToken = await oAuth2Client.getAccessToken(); const transport = nodemailer.createTransport({ service: "gmail", auth: { type: "OAuth2", user: process.env.EMAIL_USER, clientId: CLIENT_ID, clientSecret: CLIENT_SECRET, refreshToken: REFRESH_TOKEN, accessToken: accessToken, }, }); const mailOptions = { from: `Your Name `, to: receiver_email, subject: ``, //Add Subject of Email html: ``, // Add your HTML template here }; return await transport.sendMail(mailOptions); } catch (error) { console.error("Error in sendMail function:", error); throw error; } }
यह फ़ंक्शन:
app.post("/webhook", async (req, res) => { try { const webhookData = req.body; await sendEmail(webhookData); res.status(200).send("Email sent successfully"); } catch (error) { console.error("Error processing webhook:", error); res.status(500).send("Error processing webhook"); } });
हमारा वेबहुक समापन बिंदु:
कर्ल या पोस्टमैन का उपयोग करके अपने वेबहुक का परीक्षण करें:
curl -X POST http://localhost:4000/webhook \ -H "Content-Type: application/json" \ -d '{ "receiver_email": "[email protected]", }'
सामान्य मुद्दे और समाधान:
अब आपके पास एक सुरक्षित, OAuth2-प्रमाणित ईमेल अधिसूचना प्रणाली है! यह कार्यान्वयन सुरक्षा और विश्वसनीयता बनाए रखते हुए अधिक जटिल अधिसूचना प्रणालियों के निर्माण के लिए एक ठोस आधार प्रदान करता है।
आशा है कि ईमेल सेवा स्थापित करने में यह पोस्ट आपके लिए उपयोगी होगी।
हैप्पी कोडिंग! ?
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3