ईमेल भेजने का तरीका Codeआग लगनेवाला

⚡ स्मार्ट सारांश

CodeIgniter Sending Email, SMTP या स्थानीय मेल सर्वर के माध्यम से संदेश भेजने के लिए फ्रेमवर्क की अंतर्निहित ईमेल लाइब्रेरी पर निर्भर करता है। यह उदाहरण एक ईमेल कॉन्फ़िगरेशन फ़ाइल, एक संपर्क फ़ॉर्म दृश्य और एक नियंत्रक बनाता है जो फ़ॉर्म इनपुट पढ़ता है और संदेश भेजता है।

  • 📧 अंतर्निर्मित लाइब्रेरी: यह ईमेल लाइब्रेरी न्यूनतम कोड के साथ मेल भेजती है और SMTP, Sendmail और PHP मेल ट्रांसपोर्ट का समर्थन करती है।
  • ⚙️ केंद्रीय कॉन्फ़िगरेशन: एक कस्टम ईमेल.php कॉन्फ़िगरेशन फ़ाइल प्रोटोकॉल, होस्ट, पोर्ट, उपयोगकर्ता और पासवर्ड को संग्रहीत करती है ताकि सेटिंग्स एक ही स्थान पर रहें।
  • 🔓 एसएमटीपी क्रेडेंशियल: मान्य smtp_host, smtp_user और smtp_pass मान आवश्यक हैं; नकली पैरामीटर कभी भी वास्तविक ईमेल नहीं भेजेंगे।
  • 📝 नियंत्रक को भेजा जाने वाला प्रपत्र: एक संपर्क दृश्य प्राप्तकर्ता, विषय और संदेश को एकत्रित करता है, जिसे नियंत्रक इनपुट लाइब्रेरी के साथ पढ़ता है।
  • 📤 सेंड फ्लो: कंट्रोलर 'फ्रॉम', 'टू', 'सब्जेक्ट' और 'मैसेज' सेट करता है, फिर 'सेंड()' फ़ंक्शन को कॉल करता है और विफलता होने पर एक डीबगर रिपोर्ट प्रिंट करता है।
  • 📎 एचटीएमएल और फाइलें: मेलटाइप को एचटीएमएल में बदलकर और अटैच() फ़ंक्शन को कॉल करके आप फ़ाइल अटैचमेंट के साथ स्वरूपित संदेश भेज सकते हैं।
  • 🤖 एआई सहायता: एआई टूल ईमेल कंट्रोलर उत्पन्न कर सकते हैं, फॉर्म इनपुट को मान्य कर सकते हैं और डीबगर आउटपुट से एसएमटीपी कनेक्शन त्रुटियों का निदान कर सकते हैं।

Codeइग्नाइटर ईमेल भेज रहा है

वेब अनुप्रयोगों में ईमेल का बहुत महत्व है। जब कोई उपयोगकर्ता साइन अप करता है, तो हम उनके ईमेल पते की पुष्टि करने और सदस्यता की पुष्टि करने के लिए उन्हें ईमेल भेजना चाहते हैं। हम भूले हुए पासवर्ड रीसेट करने और ग्राहकों को चालान और रसीदें भेजने के लिए भी ईमेल का उपयोग करते हैं। Codeइग्नाइटर की मदद से हम विभिन्न विकल्पों का उपयोग करके अपने एप्लिकेशन से ईमेल भेजना बेहद आसान बना सकते हैं।

CodeIgniter में एक अंतर्निर्मित ईमेल लाइब्रेरी है जिसका उपयोग हम ईमेल भेजते समय कर सकते हैं।

Codeइग्नाइटर ईमेल कॉन्फ़िगरेशन

हमें एक केंद्रीय स्थान की आवश्यकता है जहाँ हम ईमेल सेटिंग्स को प्रबंधित कर सकें। CodeIgniter में ईमेल के लिए कोई कॉन्फ़िगरेशन फ़ाइल नहीं होती है, इसलिए हमें इसे स्वयं बनाना होगा।

application/config निर्देशिका में email.php फ़ाइल बनाएँ

email.php में निम्नलिखित कोड जोड़ें

<?php defined('BASEPATH') OR exit('No direct script access allowed');
 
$config = array(
'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp'
'smtp_host' => 'smtp.example.com',
'smtp_port' => 465,
'smtp_user' => 'no-reply@example.com',
'smtp_pass' => '12345!',
'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example
'mailtype' => 'text', //plaintext 'text' mails or 'html'
'smtp_timeout' => '4', //in seconds
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);

यहाँ,

  • 'protocol' => 'smtp', ईमेल भेजते समय उपयोग किए जाने वाले प्रोटोकॉल को निर्दिष्ट करता है। यह हो सकता है Gmail एसएमटीपी सेटिंग्स या आपके होस्ट से एसएमटीपी सेटिंग्स
  • 'smtp_host' => 'smtp.example.com', SMTP होस्ट निर्दिष्ट करता है। उदाहरण के लिए, यदि आप उपयोग करना चाहते हैं Gmail तब आपके पास smtp.gmail.com जैसा कुछ होगा।
  • 'smtp_port' => 465, निर्दिष्ट SMTP होस्ट पर एक खुला पोर्ट जिसे SMTP मेल के लिए कॉन्फ़िगर किया गया है
  • 'smtp_user' => 'no-reply@example.com', वह ईमेल पता जिसे ईमेल भेजते समय प्रेषक के रूप में उपयोग किया जाएगा। यह एक वैध ईमेल पता होना चाहिए जो सर्वर पर मौजूद हो
  • 'smtp_pass' => '12345!', निर्दिष्ट SMTP उपयोगकर्ता ईमेल का पासवर्ड
  • 'smtp_crypto' => 'ssl', उपयोग की जाने वाली एन्क्रिप्शन विधि को निर्दिष्ट करता है, जैसे कि ssl, tls आदि।
  • 'mailtype' => 'text', ईमेल का प्रकार निर्धारित करता है। यह आपकी आवश्यकतानुसार सादा टेक्स्ट या HTML हो सकता है।
  • 'smtp_timeout' => '4', सेकण्ड में वह समय निर्दिष्ट करता है जो टाइमआउट अपवाद उत्पन्न होने से पहले होस्ट से कनेक्ट करने का प्रयास करते समय व्यतीत होना चाहिए।
  • 'charset' => 'iso-8859-1', ईमेल भेजते समय उपयोग किए जाने वाले वर्ण सेट को परिभाषित करता है।
  • 'वर्ड रैप' => TRUE, यदि इसे TRUE पर सेट किया जाता है तो वर्ड रैप सक्षम हो जाता है। यदि इसे FALSE पर सेट किया जाता है, तो वर्ड रैप सक्षम नहीं होता है।

नोट: ईमेल भेजने के लिए आपको वैध कॉन्फ़िगरेशन पैरामीटर प्रदान करने चाहिए। डमी पैरामीटर ईमेल भेजने में सक्षम नहीं होंगे।

Codeइग्नाइटर ईमेल दृश्य

इस अनुभाग में, हम वह दृश्य बनाएंगे जो प्राप्तकर्ता को ईमेल भेजेगा।

एप्लिकेशन/व्यूज़ में एक नई निर्देशिका ईमेल बनाएँ

application/views/email फ़ोल्डर में contact.php नाम की एक नई फ़ाइल बनाएँ।

application/views/email/contact.php में निम्न कोड जोड़ें

<!DOCTYPE html>
<html>
<head>
<title>CodeIgniter Send Email</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<h3>Use the form below to send email</h3>
<form method="post" action="<?=base_url(0)?>" enctype="multipart/form-data">
<input type="email" id="to" name="to" placeholder="Receiver Email">
<br><br>
<input type="text" id="subject" name="subject" placeholder="Subject">
<br><br>
<textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea>
<br><br>
<input type="submit" value="Send Email" />
</form>
</div>
</body>
</html>

यहाँ,

  • हमारे पास एक बेसिक एचटीएमएल फॉर्म है जो ईमेल, विषय और संदेश को स्वीकार करता है, फिर उन मापदंडों को ईमेल रूट में भेजता है।

Codeइग्नाइटर ईमेल नियंत्रक

अब आइए उस कंट्रोलर को बनाते हैं जो ईमेल भेजने का काम संभालेगा।

application/controllers/EmailController.php में एक नई फ़ाइल EmailController.php बनाएँ

EmailController.php में निम्नलिखित कोड जोड़ें

<?php
 
defined('BASEPATH') OR exit('No direct script access allowed');
 
class EmailController extends CI_Controller {
 
public function __construct() {
parent:: __construct();
 
$this->load->helper('url');
}
 
public function index() {
$this->load->view('email/contact');
}
 
function send() {
$this->load->config('email');
$this->load->library('email');
 
$from = $this->config->item('smtp_user');
$to = $this->input->post('to');
$subject = $this->input->post('subject');
$message = $this->input->post('message');
 
$this->email->set_newline("\r\n");
$this->email->from($from);
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($message);
 
if ($this->email->send()) {
echo 'Your Email has successfully been sent.';
} else {
show_error($this->email->print_debugger());
}
}
}

यहाँ,

  • class EmailController extends CI_Controller {…} हमारे ईमेल कंट्रोलर को परिभाषित करता है जो पैरेंट क्लास से विस्तारित होता है। Codeइग्नाइटर नियंत्रक।
  • public function __construct() {…} चाइल्ड कंस्ट्रक्टर को परिभाषित करता है जो पैरेंट कंस्ट्रक्टर विधि को कॉल करता है।
  • सार्वजनिक फ़ंक्शन इंडेक्स() {…} इंडेक्स विधि को परिभाषित करता है जो संपर्क फ़ॉर्म प्रदर्शित करता है
  • फ़ंक्शन send() {…} ईमेल भेजने वाली विधि को परिभाषित करता है
    • $this->load->config('email'); ईमेल कॉन्फ़िगरेशन सेटिंग्स लोड करता है
    • $this->load->library('email'); ईमेल लाइब्रेरी लोड करता है
    • $from = $this->config->item('smtp_user'); हमारे द्वारा परिभाषित ईमेल कॉन्फ़िगरेशन फ़ाइल से प्रेषक आईडी प्राप्त करता है।
    • $to = $this->input->post('to'); सबमिट किए गए फॉर्म से to मान प्राप्त करता है
    • $subject = $this->input->post('subject'); फॉर्म से ईमेल का विषय सेट करता है
    • $message = $this->input->post('message'); फॉर्म से ईमेल संदेश सेट करता है
    • $this->email->set_newline(“\r\n”); ईमेल के लिए नए लाइन अक्षर परिभाषित करता है
    • $this->email->from($from); प्रेषक का ईमेल पता सेट करता है
    • $this->email->to($to); प्राप्तकर्ता का ईमेल पता सेट करता है
    • $this->email->subject($subject); ईमेल विषय निर्धारित करता है
    • $this->email->message($message); ईमेल संदेश सेट करता है
    • if ($this->email->send()) {…} ईमेल भेजने का प्रयास करता है। यदि ईमेल सफलतापूर्वक भेज दिया जाता है, तो "आपका ईमेल सफलतापूर्वक भेज दिया गया है" संदेश प्रदर्शित होता है, अन्यथा त्रुटि की संभावित जानकारी प्रदर्शित होती है।

अब आइए ईमेल रूट को परिभाषित करें।

ईमेल मार्ग

application/config/routes.php में निम्नलिखित रूट जोड़ें

$route['send-email'] = 'EmailController';
$route['email'] = 'EmailController/send';

अब हम वेब ब्राउज़र में संपर्क फ़ॉर्म लोड कर सकते हैं।

चलिए बिल्ट-इन PHP सर्वर शुरू करते हैं।

टर्मिनल या कमांड लाइन खोलें और अपने एप्लिकेशन के रूट फ़ोल्डर में जाएं। मेरे मामले में, रूट फ़ोल्डर C:\Sites\ci-app ड्राइव में स्थित है।

cd C:\Sites\ci-app

निम्न कमांड का उपयोग करके सर्वर प्रारंभ करें

php -S localhost:3000

निम्नलिखित को लोड करें URL अपने वेब ब्राउज़र में: http://localhost:3000/send-email

आपको निम्नलिखित फॉर्म दिखाई देना चाहिए

ईमेल मार्ग

प्राप्तकर्ता का ईमेल पता, विषय और ईमेल संदेश दर्ज करें, फिर "ईमेल भेजें" पर क्लिक करें। यदि आपकी ईमेल सेटिंग सही है, तो आपको सफलता का संदेश दिखाई देगा।

HTML ईमेल और अटैचमेंट कैसे भेजें Codeआग लगनेवाला

इसी ईमेल लाइब्रेरी की मदद से उच्च प्रारूप वाले संदेश और फाइलें भेजी जा सकती हैं। दो छोटे बदलाव करके ऊपर दिए गए सादे टेक्स्ट के उदाहरण को अटैचमेंट वाले HTML ईमेल में बदला जा सकता है।

$this->email->set_mailtype('html');
$this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>');
$this->email->attach('/path/to/report.pdf');
  • set_mailtype('html'): यह लाइब्रेरी को बताता है कि बॉडी में HTML शामिल है, इसलिए हेडिंग और लिंक जैसे टैग प्राप्तकर्ता के इनबॉक्स में दिखाई देते हैं।
  • संलग्न करना(): यह संदेश में सर्वर पथ से एक फ़ाइल जोड़ता है; send() से पहले प्रत्येक फ़ाइल के लिए इसे एक बार कॉल करें।

ध्यान रखें कि HTML ईमेल में अभी भी एक सादा टेक्स्ट विकल्प शामिल होना चाहिए, और बड़े अटैचमेंट को सख्त मेल सर्वर द्वारा अस्वीकार किया जा सकता है।

अक्सर पूछे जाने वाले प्रश्न

लोकलहोस्ट में आमतौर पर कोई मेल सर्वर नहीं होता है, इसलिए मेल प्रोटोकॉल चुपचाप विफल हो जाता है। प्रोटोकॉल को SMTP में बदलें और एक वास्तविक SMTP होस्ट, उपयोगकर्ता और पासवर्ड प्रदान करें, या किसी सेवा का उपयोग करें जैसे कि Mailस्थानीय परीक्षण के लिए जाल।

smtp_host को smtp.gmail.com पर, smtp_port को 465 (SSL के साथ) पर और smtp_user को अपने उपयोगकर्ता नाम पर सेट करें। Gmail पता। अपने सामान्य पासवर्ड के बजाय गूगल ऐप पासवर्ड का उपयोग करें, क्योंकि Gmail यह बुनियादी पासवर्ड लॉगिन को ब्लॉक करता है।

मेल प्रोटोकॉल PHP के mail() फ़ंक्शन का उपयोग करता है, sendmail सर्वर के स्थानीय बाइनरी को कॉल करता है, और smtp क्रेडेंशियल्स के साथ एक बाहरी मेल सर्वर से कनेक्ट होता है। SMTP डिलीवरी और प्रमाणीकरण के लिए सबसे विश्वसनीय है।

जी हां। एआई कंट्रोलर बना सकता है, प्राप्तकर्ता और विषय के लिए फॉर्म वैलिडेशन जोड़ सकता है, और सफलता और त्रुटि प्रबंधन को शामिल कर सकता है। Revउत्पादन में इसका उपयोग करने से पहले SMTP सेटिंग्स की समीक्षा करें और दर सीमा निर्धारित करें।

जी हां। print_debugger() का आउटपुट पेस्ट करें, और AI SMTP हैंडशेक विफलताओं, प्रमाणीकरण त्रुटियों या पोर्ट समस्याओं की व्याख्या कर सकता है, फिर सही होस्ट, पोर्ट या एन्क्रिप्शन मानों की अनुशंसा कर सकता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: