लारवेल में ईमेल भेजने के लिए तीन घटकों के बीच सहयोग की आवश्यकता होती है: लारवेल मेलर, लारवेल मेल करने योग्य कक्षाएं, और मेल मुखौटा। तीनों में से प्रत्येक ईमेल भेजने के जीवनचक्र के एक अलग पहलू से संबंधित है।
मेलर ईमेल भेजने वाली सेवाओं (जैसे एडब्ल्यूएस एसईएस, सेंडग्रिड, मेलगन इत्यादि) को जोड़ने के लिए ड्राइवर हैं जिनका उपयोग एप्लिकेशन प्राप्तकर्ताओं को ईमेल अग्रेषित करने के लिए कर सकता है।
लारवेल मेलएबल विशेष वर्ग हैं जो भेजने के लिए ईमेल के एक टेम्पलेट का प्रतिनिधित्व करते हैं। इसमें ईमेल संदेश की सभी विशिष्ट जानकारी जैसे सामग्री, "टू" फ़ील्ड, अनुलग्नक इत्यादि शामिल हैं।
अंत में, मेल मुखौटा एक मेलर ड्राइवर के माध्यम से मेल करने योग्य वस्तु को वास्तविक रूप से भेजने का अनुरोध करने के लिए पहुंच बिंदु है।
मुझे इस प्रणाली का विस्तार से पता लगाने का अवसर मिला और अब चरम पर इंस्पेक्टर प्रति घंटे 6000 से अधिक ईमेल भेजता है।
मुझे उम्मीद है कि मेरा अनुभव फ्रेमवर्क के इस घटक को बेहतर ढंग से समझने में आपके लिए मददगार हो सकता है क्योंकि लारवेल मेलएबल किसी भी आधुनिक एप्लिकेशन के प्रमुख घटकों में से एक है।
अधिक तकनीकी लेखों के लिए आप मुझे लिंक्डइन या एक्स पर फ़ॉलो कर सकते हैं।
लारवेल में मेलर ड्राइवरों का कॉन्फ़िगरेशन config/mail.php फ़ाइल में है। कई मेलर्स को परिभाषित करना संभव है, जिनमें से प्रत्येक की विशेषता एक नाम और एक ट्रांसपोर्ट ड्राइवर है।
'mailgun' => [ 'transport' => 'mailgun', // 'client' => [ // 'timeout' => 5, // ]
प्राथमिक ईमेल सेवा बंद होने की स्थिति में लारवेल उनका उपयोग करने का प्रयास करेगा।
मेलएबल एक PHP क्लास है जो आपके एप्लिकेशन द्वारा भेजे गए ईमेल का प्रतिनिधित्व करता है। आप आर्टिसन मेक कमांड का उपयोग करके एक नया मेल करने योग्य वर्ग बना सकते हैं।
php artisan make:mail OrderConfirmation
मेल करने योग्य का कॉन्फ़िगरेशन तीन मुख्य तरीकों लिफ़ाफ़ा, सामग्री और अनुलग्नकों के माध्यम से होता है, जो क्रमशः हेडर, संदेश के मुख्य भाग और किसी भी अनुलग्नक को परिभाषित करने से संबंधित हैं।
use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailables\Address; use Illuminate\Mail\Mailables\Attachment; use Illuminate\Mail\Mailables\Content; use Illuminate\Mail\Mailables\Envelope; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderConfirmation extends Mailable { use Queueable; use SerializesModels; public function __construct(public Order $order) {} /** * Configure the email message */ public function envelope() { return new Envelope( from: new Address('[email protected]', 'E-commerce'), subject: 'Order Confirmation', ); } /** * Generate the body */ public function content() { return new Content( markdown: 'emails.orders.confirm', ); } /** * Configure the email attachements */ public function attachments() { $code = $this->order->code; return [ Attachment::fromPath("/path/to/order-{$code}.pdf"), ]; } }
ईमेल सामग्री का प्रतिपादन, स्पष्ट रूप से, उपयुक्त ब्लेड टेम्पलेट को सौंपा गया है। ब्लेड व्यू के अंदर मेल करने योग्य वर्ग में परिभाषित सार्वजनिक गुणों का उपयोग करके ईमेल को प्रस्तुत करने के लिए उपयोग किए जाने वाले डेटा को पुनः प्राप्त करना संभव है (उपरोक्त उदाहरण में $ ऑर्डर करें)।
Code: {{ $order->code }} Address: {{ $order->address }} ...
किसी ईमेल को वास्तविक रूप से भेजना मेल मुखौटा और उसके भेजने और भेजने के तरीकों के माध्यम से होता है।
class OrderController extends Controller { public function ship(Order $order) { // do stuff with the order // Send the confirmation email Mail::to($order->user)->send(new OrderConfirmation($order)); } }
ईमेल प्राप्तकर्ता को ईमेल एड्रेस स्ट्रिंग के रूप में या उपयोगकर्ता ऑब्जेक्ट या ऑब्जेक्ट्स के संग्रह के माध्यम से पारित किया जा सकता है जिसमें नाम और ईमेल गुण होते हैं।
भेजा जाने वाला वास्तविक ईमेल मेल करने योग्य ऑब्जेक्ट द्वारा दर्शाया जाता है, जो सामग्री से जुड़े ब्लेड टेम्पलेट को प्रस्तुत करने के लिए आवश्यक गुण प्राप्त करता है।
मेल मुखौटा विभिन्न श्रृंखला योग्य तरीकों की पेशकश करता है जो आपको प्राप्तकर्ताओं (सीसी और बीसीसी विधियों के साथ) और भेजने के समय और तरीकों (कतार या बाद में) दोनों के संबंध में भेजने वाले कॉन्फ़िगरेशन को अधिक विस्तार से परिभाषित करने की अनुमति देता है।
यदि आप सीखना चाहते हैं कि अपने स्वयं के मुखौटे कैसे बनाएं तो आप नीचे दिया गया लेख पढ़ सकते हैं:
https://inspector.dev/how-to-extend-laravel-with-driver-आधारित-services/
चूंकि ईमेल भेजने के लिए बाहरी सेवाओं (मेलर ड्राइवर) के उपयोग की आवश्यकता होती है, इसलिए यह उपयोगकर्ता अनुभव पर नकारात्मक प्रभाव डालने वाला धीमा संचालन हो सकता है।
लारवेल आपको पृष्ठभूमि में भेजने के लिए ईमेल संदेशों को कतारबद्ध करने की अनुमति देता है। यदि आप बड़े पैमाने पर लारवेल कतार प्रणाली का उपयोग करने के तरीके के बारे में ट्यूटोरियल में रुचि रखते हैं तो आप नीचे दिया गया लेख पढ़ सकते हैं:
https://inspector.dev/what-worked-for-me-using-laravel-queues-from-the-basics-to-horizon/
पृष्ठभूमि में ईमेल भेजने को स्थगित करने के लिए आपके पास दो विकल्प हैं: शोल्डक्यू इंटरफ़ेस, या मेल मुखौटा की कतार विधि।
जैसा कि पिछले स्निपेट में दिखाया गया है, मेलयोग्य वर्ग क्यूएबल जैसे डिफ़ॉल्ट रूप से संलग्न कुछ लक्षणों के साथ उत्पन्न होता है।
यह आपके कार्यान्वयन को छुए बिना मेल पहलू पर कतार विधियों का प्रोग्रामेटिक रूप से उपयोग करने की अनुमति देता है:
Mail::to($user)->queue(new OrderConfirmation($order));
वैकल्पिक रूप से आप मेल करने योग्य वर्ग में शोडक्यू इंटरफ़ेस के कार्यान्वयन की घोषणा कर सकते हैं:
use Illuminate\Contracts\Queue\ShouldQueue; class OrderConfirmation extends Mailable implements ShouldQueue { ... }
यदि आप इस इंटरफ़ेस का उपयोग करते हैं तो ईमेल भेजना हमेशा कतारबद्ध रहता है, भले ही आप मेल मुखौटा पर मानक भेजने की विधि को कॉल करते हों।
// If the mailable class implements ShouldQueue these methods has the same behaviour. Mail::to($user)->send(new OrderConfirmation($order)); Mail::to($user)->queue(new OrderConfirmation($order));
जब आप किसी ईमेल संदेश से संबंधित दृश्य को कार्यान्वित करते हैं तो ब्लेड दृश्य के अंतिम परिणाम के बारे में दृश्य प्रतिक्रिया प्राप्त करना वास्तव में सहायक होता है। आप इसे अपने लारवेल प्रोजेक्ट्स में रूट्स/मेलएबल.php फ़ाइल का उपयोग करके कर सकते हैं।
/* * Render email in the browser. * * Visit https://homestead.test/mailable */ Route::get('/', function () { return new \App\Domains\Organization\Mails\IngestionLimitMail( \App\Domains\Organization\Models\Organization::firstOrFail() ); });
आप रूट से एक वैध मेल करने योग्य उदाहरण लौटा सकते हैं और लारवेल ब्राउज़र में दृश्य प्रस्तुत करेगा। यह एक सामान्य वेब पेज विकसित करने जैसा है।
अंत में इस मार्ग की उपलब्धता को सीमित करना याद रखें
रूटसेवाप्रदाता:
class RouteServiceProvider extends ServiceProvider { /** * Define your route model bindings, pattern filters, etc. * * @return void */ public function boot() { if (app()->environment('local')) { $this->mapMailableRoutes(); } } /** * Render mailables in the browser. * * @return void */ protected function mapMailableRoutes() { Route::prefix('mailable') ->group(base_path('routes/mailable.php')); } }
अधिक तकनीकी लेखों के लिए आप मुझे लिंक्डइन या एक्स पर फ़ॉलो कर सकते हैं।
इंस्पेक्टर एक कोड निष्पादन निगरानी उपकरण है जो विशेष रूप से सॉफ्टवेयर डेवलपर्स के लिए डिज़ाइन किया गया है। आपको सर्वर स्तर पर कुछ भी इंस्टॉल करने की आवश्यकता नहीं है, बस लारवेल पैकेज इंस्टॉल करें और आप जाने के लिए तैयार हैं।
यदि आप HTTP मॉनिटरिंग, डेटाबेस क्वेरी अंतर्दृष्टि और अपने पसंदीदा मैसेजिंग वातावरण में अलर्ट और सूचनाओं को अग्रेषित करने की क्षमता की तलाश में हैं, तो इंस्पेक्टर को निःशुल्क आज़माएं। अपना खाता पंजीकृत करें।
या वेबसाइट पर अधिक जानें: https://inspector.dev
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3