Nodemailer एक Node.js मॉड्यूल है जो आपको अपने सर्वर से आसानी से ईमेल भेजने की अनुमति देता है। चाहे आप अपने उपयोगकर्ताओं के साथ संवाद करना चाहते हों या कुछ गलत होने पर खुद को सूचित करना चाहते हों, ऐसा करने का एक विकल्प मेल के माध्यम से है।
वहाँ कई लेख हैं जो बताते हैं कि Nodemailer को नंगे हड्डियों के रूप में कैसे उपयोग किया जाए, लेकिन यह लेख उनमें से एक नहीं है। यहां, मैं आपके Node.js बैकएंड से Nodemailer और Gmail का उपयोग करके ईमेल भेजने का सबसे सामान्य अभ्यास दिखाऊंगा।
नोडेमेलर के साथ शुरुआत कैसे करें
सबसे पहले, हमें एक्सप्रेस का उपयोग करके अपना Node.js बॉयलरप्लेट सेट करना होगा। यह सुनिश्चित करने के लिए कि आपके पास नोड और npm स्थापित है, आप निम्न कमांड चला सकते हैं:
node -v
npm -v
यदि ये दोनों आदेश एक संस्करण दिखाते हैं, तो आप जाने के लिए अच्छे हैं। अन्यथा, जो गुम है उसे स्थापित करें।
अपनी परियोजना के लिए एक निर्देशिका बनाएँ। हम नोडमेलरप्रोजेक्ट का उपयोग करेंगे ।
mkdir nodemailerProject
नई बनाई गई निर्देशिका के अंदर जाएं और चलाएं
npm init
यह हमारे प्रोजेक्ट को pacakge.json . के साथ आरंभ करेगा फ़ाइल।
इसके बाद, हमें एक्सप्रेस का उपयोग करके इंस्टॉल करना होगा:
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}`)
})
ऊपर वही है जो एक्सप्रेस का उपयोग करके एक साधारण सर्वर शुरू करने के लिए आवश्यक है। आप देख सकते हैं कि यह चलकर ठीक से काम कर रहा है:
node index.js
नोडेमेलर कैसे स्थापित करें
निम्नलिखित कमांड का उपयोग करके नोडमेलर स्थापित करें:
npm install nodemailer
Nodemailer का API बहुत आसान है और हमें निम्नलिखित करने की आवश्यकता है:
- एक ट्रांसपोर्टर बनाएं वस्तु
- एक मेल विकल्प बनाएं वस्तु
- 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
}
});
✋ ध्यान दें, उपयोगकर्ता और पास कुंजियों के अलावा, जो आपके gmail खाते के लिए आपके स्वयं के क्रेडेंशियल हैं, अन्य तीन कुंजियों को OAuth सेट करने के बाद पुनर्प्राप्त करने की आवश्यकता है।
जैसा कि हमने इस लेख की शुरुआत में कहा था, हम अपनी मेल भेजने की जरूरतों के लिए जीमेल का उपयोग करेंगे। जैसा कि आपने अनुमान लगाया होगा, जब किसी उपयोगकर्ता के खाते द्वारा/भेजे गए मेल की बात आती है तो जीमेल में उच्च स्तर की सुरक्षा होती है।
हम इस बाधा को दूर करने के कई तरीके हैं (कुछ दूसरों की तुलना में बेहतर), और हम उसे चुनेंगे जिसके लिए हमें Google क्लाउड प्लेटफ़ॉर्म में एक प्रोजेक्ट सेट करना होगा। . Gmail द्वारा सक्षम OAuth सुरक्षा के लिए क्रेडेंशियल प्राप्त करने के लिए हमें ऐसा करने की आवश्यकता है।
यदि आप नोडमेलर के साथ जीमेल का उपयोग करने की जटिलताओं के बारे में अधिक पढ़ना चाहते हैं, तो यहां जाएं।
अगले चरणों में कोडिंग के बजाय कुछ कॉन्फ़िगरेशन की आवश्यकता होगी, इसलिए स्वयं को तैयार करें।
Google Cloud Platform कॉन्फ़िगरेशन
यदि आपके पास Google क्लाउड प्लेटफ़ॉर्म खाता नहीं है, तो इसे एक पूर्वापेक्षा के रूप में सेट करना सुनिश्चित करें। एक बार जब आप इसे सेट कर लें, तो ऊपरी बाएं कोने में ड्रॉपडाउन मेनू पर क्लिक करके एक नया प्रोजेक्ट बनाएं।
नया प्रोजेक्ट विकल्प चुनें:
अगली विंडो में, हमें अपने प्रोजेक्ट को एक नाम देना होगा। आप जो चाहें चुनें, लेकिन हम NodemailerProject . के साथ जारी रखेंगे नाम। स्थान संपत्ति के लिए, आप इसे कोई संगठन नहीं के रूप में छोड़ सकते हैं।
प्रोजेक्ट को सेट होने में कुछ सेकंड लग सकते हैं, लेकिन उसके बाद आप यह स्क्रीन देख पाएंगे:
शीर्ष बाएं कोने में तीन धराशायी लाइनों पर क्लिक करके नेविगेशन मेनू खोलें और एपीआई और सेवाएं: चुनें।
Nodemailer और Gmail का उपयोग करने में सक्षम होने के लिए हमें OAuth2 का उपयोग करना होगा। यदि आप OAuth से परिचित नहीं हैं, तो यह प्रमाणीकरण के लिए एक प्रोटोकॉल है। मैं यहाँ विवरण में नहीं जाऊँगा क्योंकि यह आवश्यक नहीं है, लेकिन यदि आप इसके बारे में और अधिक समझना चाहते हैं, तो यहाँ जाएँ।
सबसे पहले हमें अपनी OAuth सहमति स्क्रीन को कॉन्फ़िगर करना होगा:
यदि आप G-Suite के सदस्य नहीं हैं, तो उपयोगकर्ता प्रकार के लिए बाहरी विकल्प ही उपलब्ध एकमात्र विकल्प होगा।
क्रिएट पर क्लिक करने के बाद, अगली स्क्रीन में हमें एप्लिकेशन की जानकारी (हमारे सर्वर) को भरने की आवश्यकता होती है:
उपयोगकर्ता सहायता ईमेल फ़ील्ड में और डेवलपर संपर्क जानकारी फ़ील्ड में भी अपना ईमेल भरें। सहेजें और जारी रखें पर क्लिक करने से हम इस कॉन्फ़िगरेशन के कार्यक्षेत्र चरण में आ जाएंगे। इस चरण को छोड़ दें, क्योंकि यह हमारे लिए प्रासंगिक नहीं है, और परीक्षण उपयोगकर्ता चरण में प्रवेश करें।
यहां, अपने आप को एक उपयोगकर्ता के रूप में जोड़ें और सहेजें और जारी रखें पर क्लिक करें।
अपनी OAuth सेटिंग कैसे कॉन्फ़िगर करें
इस चरण में हम Nodemailer के साथ उपयोग करने के लिए OAuth क्रेडेंशियल बनाएंगे। OAuth सहमति स्क्रीन के ऊपर क्रेडेंशियल टैब पर जाएं। उस प्लस (➕) चिह्न पर क्लिक करें जिसमें टेक्स्ट क्रेडेंशियल्स बनाएं . है और OAuth क्लाइंट आईडी चुनें।
एप्लिकेशन प्रकार ड्रॉपडाउन मेनू में, वेब एप्लिकेशन चुनें :
अधिकृत रीडायरेक्ट यूआरआई . में अनुभाग में, OAuth2 खेल का मैदान (https://developers.google.com/oauthplayground) जोड़ना सुनिश्चित करें क्योंकि हम इसका उपयोग उन कुंजियों में से एक प्राप्त करने के लिए करेंगे जिनका उल्लेख इस लेख की शुरुआत में किया गया था।
create पर क्लिक करने के बाद आपको आपकी क्लाइंट आईडी और क्लाइंट सीक्रेट के साथ प्रस्तुत किया जाएगा। इन्हें अपने पास रखें और कभी भी इन्हें किसी भी तरह, आकार या रूप में उजागर न करें ।
अपना OAuth रीफ़्रेश टोकन प्राप्त करें
ताज़ा टोकन प्राप्त करने के लिए, जिसे हम Nodemailer में ट्रांसपोर्टर ऑब्जेक्ट के भीतर उपयोग करेंगे, हमें OAuth2 खेल के मैदान पर जाने की आवश्यकता है। हमने पहले चरण में इस विशिष्ट उद्देश्य के लिए इस यूआरआई को मंजूरी दी थी।
1. दाईं ओर स्थित गियर आइकन पर क्लिक करें (जो कि OAuth2 कॉन्फ़िगरेशन है) और अपने स्वयं के OAuth2 क्रेडेंशियल का उपयोग करने के लिए चेकबॉक्स चेक करें:
2. वेबसाइट के बाईं ओर देखें और आपको सेवाओं की एक सूची दिखाई देगी। जब तक आपको Gmail API v1 दिखाई न दे, तब तक नीचे स्क्रॉल करें।
3. एपीआई अधिकृत करें Click क्लिक करें
आपको अपने किसी भी जीमेल खाते में लॉगिन करने के लिए एक स्क्रीन के साथ प्रस्तुत किया जाएगा। वह चुनें जिसे आपने परीक्षण उपयोगकर्ता के रूप में सूचीबद्ध किया है।
4. अगली स्क्रीन आपको बताएगी कि Google ने अभी भी इस एप्लिकेशन को सत्यापित नहीं किया है, लेकिन यह ठीक है क्योंकि हमने इसे सत्यापन के लिए सबमिट नहीं किया है। जारी रखें क्लिक करें।
5. अगली स्क्रीन में, आपको अपने प्रोजेक्ट को अपने जीमेल अकाउंट से इंटरैक्ट करने की अनुमति देने के लिए कहा जाएगा। ऐसा करें।
6. एक बार ऐसा करने के बाद, आपको OAuth खेल के मैदान पर वापस भेज दिया जाएगा और आप देख सकते हैं कि बाईं ओर मेनू में एक प्राधिकरण कोड है। टोकन के लिए प्राधिकरण कोड का आदान-प्रदान करें . लेबल वाले नीले बटन पर क्लिक करें ।
रीफ़्रेश टोकन और एक्सेस टोकन के लिए फ़ील्ड अब भर दिए जाएंगे।
सर्वर पर वापस जाएं
उन सभी कॉन्फ़िगरेशन को करने के बाद, हम अपने एप्लिकेशन पर वापस आ सकते हैं और उस सभी डेटा को ट्रांसपोर्टर निर्माण में इनपुट कर सकते हैं। अपने सभी क्रेडेंशियल्स को निजी रखने के लिए, आप 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: [email protected],
to: [email protected],
subject: 'Nodemailer Project',
text: 'Hi from your nodemailer project'
};
इस ऑब्जेक्ट में कई और फ़ील्ड हो सकते हैं और यहां तक कि कई प्राप्तकर्ता भी हो सकते हैं, लेकिन हम यहां उस पर नहीं जाएंगे।
अंत में, हम सेंडमेल विधि का उपयोग करेंगे:
transporter.sendMail(mailOptions, function(err, data) {
if (err) {
console.log("Error " + err);
} else {
console.log("Email sent successfully");
}
});
अपना एप्लिकेशन चलाएँ और आप देखेंगे कि आपका इनबॉक्स एक नए ईमेल से भरा हुआ है।
यह आलेख मेरे द्वारा बनाई गई एक परियोजना से प्रेरित था जो Nodemailer का उपयोग करता है। अगर आप इसे देखना चाहते हैं, तो यहां जाएं।