नोडमेलर (Nodemailer) एक Node.js मॉड्यूल है जो आपको अपने सर्वर से आसानी से ईमेल भेजने की अनुमति देता है। चाहे आप अपने उपयोगकर्ताओं से संवाद करना चाहते हों या केवल खुद को सूचित करना चाहते हों जब कुछ गलत हो जाए, इसके लिए मेल एक विकल्प है।
नोडमेलर का उपयोग कैसे करें, इस पर कई लेख हैं, लेकिन यह लेख उनमें से एक नहीं है। यहाँ, मैं आपको नोडमेलर और Gmail का उपयोग करके अपने Node.js बैकएंड से ईमेल भेजने की सबसे आम प्रथा दिखाऊंगा।
नोडमेलर से कैसे शुरू करें
सबसे पहले, हमें Express का उपयोग करके अपना Node.js बॉयलरप्लेट सेट अप करने की आवश्यकता है। यह सुनिश्चित करने के लिए कि आपके पास Node और npm इंस्टॉल हैं, आप निम्न कमांड चला सकते हैं:
node -v npm -v
यदि ये दोनों कमांड एक संस्करण दिखाते हैं, तो आप जाने के लिए तैयार हैं। अन्यथा, जो भी गायब है उसे इंस्टॉल करें।
अपनी परियोजना के लिए एक डायरेक्टरी बनाएं। हम nodemailerProject का उपयोग करेंगे।
mkdir nodemailerProject
नव निर्मित डायरेक्टरी के अंदर जाएं और चलाएं
npm init
यह हमारी परियोजना को एक package.json फ़ाइल के साथ इनिशियलाइज़ करेगा।
इसके बाद, हमें Express इंस्टॉल करने की आवश्यकता होगी:
npm install express
जिस फ़ाइल को आपने अपने एंट्री पॉइंट के रूप में इंगित किया है (डिफ़ॉल्ट index.js है), उसे खोलें और निम्न कोड पेस्ट करें:
const express = require('express')
const app = express()
const port = 3000
app.listen(port, () => {
console.log(`nodemailerProject is listening at https://localhost:${port}`)
})
ऊपर Express का उपयोग करके एक सरल सर्वर शुरू करने के लिए आवश्यक है। आप यह देखकर जांच सकते हैं कि यह ठीक से काम कर रहा है या नहीं:
node index.js
नोडमेलर कैसे इंस्टॉल करें
निम्न कमांड का उपयोग करके नोडमेलर इंस्टॉल करें:
npm install nodemailer
नोडमेलर का API काफी सरल है और इसके लिए हमें निम्न कार्य करने की आवश्यकता होती है:
- एक Transporter ऑब्जेक्ट बनाएं
- एक MailOptions ऑब्जेक्ट बनाएं
- Transporter.sendMail विधि का उपयोग करें
एक ट्रांसपोर्टर ऑब्जेक्ट बनाने के लिए, हम निम्न करते हैं:
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
type: 'OAuth2',
user: process.env.MAIL_USERNAME,
pass: process.env.MAIL_PASSWORD,
clientId: process.env.OAUTH_CLIENTID,
clientSecret: process.env.OAUTH_CLIENT_SECRET,
refreshToken: process.env.OAUTH_REFRESH_TOKEN
}
});
✋ ध्यान दें, user और pass keys के अलावा, जो आपके Gmail अकाउंट के लिए आपके अपने क्रेडेंशियल हैं, अन्य तीन keys को OAuth सेट अप करने के बाद प्राप्त करने की आवश्यकता है।
जैसा कि हमने इस लेख की शुरुआत में कहा था, हम अपनी मेल भेजने की जरूरतों के लिए Gmail का उपयोग करेंगे। जैसा कि आपने अनुमान लगाया होगा, Gmail में उपयोगकर्ता के खाते द्वारा/को भेजे गए मेल के संबंध में सुरक्षा का उच्च स्तर है।
इस बाधा को दूर करने के कई तरीके हैं (कुछ दूसरों से बेहतर), और हम उस तरीके को चुनेंगे जिसमें हमें Google Cloud Platform में एक प्रोजेक्ट सेट अप करने की आवश्यकता होती है। हमें ऐसा इसलिए करना होगा ताकि Gmail द्वारा सक्षम OAuth सुरक्षा के लिए क्रेडेंशियल्स हों।
यदि आप नोडमेलर के साथ Gmail का उपयोग करने की जटिलताओं के बारे में अधिक पढ़ना चाहते हैं, तो यहां जाएं।
अगले चरणों में कोडिंग के बजाय कुछ कॉन्फ़िगरेशन की आवश्यकता होगी, इसलिए खुद को तैयार करें।
Google Cloud Platform कॉन्फ़िगरेशन
यदि आपके पास Google Cloud Platform अकाउंट नहीं है, तो पूर्वापेक्षा के रूप में एक सेट अप करना सुनिश्चित करें। एक बार सेट अप हो जाने पर, ऊपरी बाएं कोने में ड्रॉपडाउन मेनू पर क्लिक करके एक नया प्रोजेक्ट बनाएं।
New Project विकल्प चुनें:
अगली विंडो में, हमें अपने प्रोजेक्ट को एक नाम देना होगा। आप जो चाहें चुन सकते हैं, लेकिन हम अपने NodemailerProject नाम के साथ जारी रखेंगे। स्थान संपत्ति के लिए, आप इसे No organization के रूप में छोड़ सकते हैं।
प्रोजेक्ट को सेट अप होने में कुछ सेकंड लग सकते हैं, लेकिन उसके बाद आप इस स्क्रीन को देख पाएंगे:
ऊपरी बाएं कोने में तीन धारीदार रेखाओं पर क्लिक करके नेविगेशन मेनू खोलें और APIs and Services चुनें:
नोडमेलर और Gmail का उपयोग करने में सक्षम होने के लिए हमें OAuth2 का उपयोग करना होगा। यदि आप OAuth से परिचित नहीं हैं, तो यह प्रमाणीकरण के लिए एक प्रोटोकॉल है। मैं यहाँ विशिष्टताओं में नहीं जाऊंगा क्योंकि यह आवश्यक नहीं है, लेकिन यदि आप इसके बारे में अधिक समझना चाहते हैं, तो यहां जाएं।
सबसे पहले हमें अपना OAuth Consent Screen कॉन्फ़िगर करना होगा:
यदि आप G-Suite सदस्य नहीं हैं, तो User Type के लिए केवल External विकल्प उपलब्ध होगा।
Create पर क्लिक करने के बाद, अगली स्क्रीन में हमें एप्लिकेशन की जानकारी भरनी होगी (हमारा सर्वर):
User support email फ़ील्ड में और Developer contact information फ़ील्ड में भी अपना ईमेल भरें। Save and Continue पर क्लिक करने से हम इस कॉन्फ़िगरेशन के Scopes चरण में पहुंच जाएंगे। इस चरण को छोड़ दें, क्योंकि यह हमारे लिए प्रासंगिक नहीं है, और Test Users चरण में जाएं।
यहां, खुद को एक उपयोगकर्ता के रूप में जोड़ें और Save and continue पर क्लिक करें।
अपनी OAuth सेटिंग्स कैसे कॉन्फ़िगर करें
इस चरण में हम नोडमेलर के साथ उपयोग के लिए OAuth क्रेडेंशियल्स बनाएंगे। OAuth Consent Screen के ऊपर Credentials टैब पर जाएं। प्लस (➕) चिह्न पर क्लिक करें जिस पर Create Credentials लिखा हो और OAuth Client ID चुनें।
Application type ड्रॉपडाउन मेनू में, Web Application चुनें:
Authorized Redirect URIs अनुभाग में, OAuth2 Playground (https://developers.google.com/oauthplayground) जोड़ना सुनिश्चित करें क्योंकि हम इसका उपयोग लेख की शुरुआत में उल्लिखित keys में से एक प्राप्त करने के लिए करेंगे।
Create पर क्लिक करने के बाद, आपको अपना client id और client secret प्रस्तुत किया जाएगा। इन्हें अपने पास रखें और किसी भी तरह, आकार या रूप में कभी भी उजागर न करें।
अपना OAuth रिफ्रेश टोकन प्राप्त करें
रिफ्रेश टोकन प्राप्त करने के लिए, जिसका उपयोग हम नोडमेलर में ट्रांसपोर्टर ऑब्जेक्ट के भीतर करेंगे, हमें OAuth2 Playground पर जाने की आवश्यकता है। हमने इस URI को पहले एक विशिष्ट उद्देश्य के लिए अनुमोदित किया था।
- दाईं ओर गियर आइकन पर क्लिक करें (जो OAuth2 Configuration है) और अपने स्वयं के OAuth2 क्रेडेंशियल्स का उपयोग करने के लिए चेकबॉक्स चेक करें:
- वेबसाइट के बाईं ओर देखें और आपको सेवाओं की एक सूची दिखाई देगी। नीचे स्क्रॉल करें जब तक आपको Gmail API v1 न दिखाई दे।
- Authorize APIs पर क्लिक करें
- आपको अपने किसी भी Gmail अकाउंट में लॉग इन करने के लिए एक स्क्रीन प्रस्तुत की जाएगी। वह चुनें जिसे आपने Test user के रूप में सूचीबद्ध किया है।
- अगली स्क्रीन आपको बताएगी कि Google ने अभी तक इस एप्लिकेशन को सत्यापित नहीं किया है, लेकिन यह ठीक है क्योंकि हमने इसे सत्यापन के लिए सबमिट नहीं किया है। Continue पर क्लिक करें।
- अगली स्क्रीन में, आपको अपने प्रोजेक्ट को अपने Gmail अकाउंट के साथ इंटरैक्ट करने की अनुमति देने के लिए कहा जाएगा। ऐसा करें।
- एक बार यह हो जाने पर, आपको OAuth Playground पर वापस रीडायरेक्ट किया जाएगा और आप देख सकते हैं कि बाएं मेनू में एक प्राधिकरण कोड है। नीले बटन Exchange authorization code for tokens पर क्लिक करें।
रिफ्रेश टोकन और एक्सेस टोकन के फ़ील्ड अब भर जाएंगे।
सर्वर पर वापसी
उन सभी कॉन्फ़िगरेशन को करने के बाद, हम अपने एप्लिकेशन पर वापस आ सकते हैं और ट्रांसपोर्टर निर्माण में वह सभी डेटा डाल सकते हैं। अपने सभी क्रेडेंशियल्स को निजी रखने के लिए, आप dotenv पैकेज का उपयोग कर सकते हैं। आपके द्वारा बनाई गई .env फ़ाइल को .gitignore में जोड़ना न भूलें।
तो, अब हमारे पास यह है:
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
type: 'OAuth2',
user: process.env.MAIL_USERNAME,
pass: process.env.MAIL_PASSWORD,
clientId: process.env.OAUTH_CLIENTID,
clientSecret: process.env.OAUTH_CLIENT_SECRET,
refreshToken: process.env.OAUTH_REFRESH_TOKEN
}
});
अब, हम mailOptions ऑब्जेक्ट बनाएंगे, जिसमें ईमेल कहां भेजना है और किस डेटा के साथ भेजना है, इसका विवरण होता है।
let mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient@gmail.com',
subject: 'Nodemailer Project',
text: 'Hi from your nodemailer project'
};
इस ऑब्जेक्ट में कई और फ़ील्ड हो सकते हैं और यहां तक कि एकाधिक प्राप्तकर्ता भी, लेकिन हम यहां उस पर नहीं जाएंगे।
अंत में, हम sendMail विधि का उपयोग करेंगे:
transporter.sendMail(mailOptions, function(err, data) {
if (err) {
console.log("Error " + err);
} else {
console.log("Email sent successfully");
}
});
अपना एप्लिकेशन चलाएं और आप देखेंगे कि आपके इनबॉक्स में एक नया ईमेल आ गया है।
यह लेख एक प्रोजेक्ट से प्रेरित था जिसे मैंने बनाया था जो नोडमेलर का उपयोग करता है। यदि आप इसे देखना चाहते हैं, तो यहां जाएं।