2016-01-08 6 views
5

मैं अक्सर पढ़ा है कि PHP के मेल() समारोह आंतरिक sendmail उपयोग करता है।SwiftMailer, PHPMailer, आदि: मेल के बीच अंतर() और sendmail

तो क्यों SwiftMailer, PHPMailer, आदि जैसे मेल-पुस्तकालय हमें मेल() और sendmail के बीच चयन करने का मौका देते हैं?

क्या यह वही बात नहीं है?

कह रही है कि यह एक ही बात नहीं है किसी को भी कभी नहीं सुना!

कृपया क्योंकि मैं उस के बारे में वास्तव में संदेह में हूँ मदद, '!

+2

मेल() एक ईमेल के लिए प्राथमिक है (खोलता है और प्रत्येक ई-मेल आप भेजने के लिए एक एसएमटीपी सॉकेट बंद कर देता है) जहां sendmail के रूप में() है बैच के लिए और अधिक प्रक्रियाओं (कई) – Haymaker

उत्तर

4

यूनिक्स जैसी प्रणालियों पर, mail() वास्तव में sendmail का उपयोग करता है, लेकिन यह विंडोज़ पर ऐसा नहीं है (जिसमें सभी को sendmail नहीं है, इसलिए mail() इसके बजाय एसएमटीपी भेजता है)।

स्विफ्टमेलर, एट अल। का वास्तविक लाभ यह है कि वे ईमेल भेजने के आसपास एक ओओपी रैपर प्रदान करते हैं, ताकि आपकी ईमेल सामग्री पीढ़ी को सारणीबद्ध किया जा सके (ठीक से एमआईएम लिफाफे उत्पन्न करना और हेडर सही प्राप्त करना मुश्किल हो सकता है, खासकर जब उपयोगकर्ता इनपुट भागने की आवश्यकता है), और वास्तविक परिवहन तंत्र भी समेकित है (ताकि आप अपने सभी कोड को बदलने के बिना मेल प्रदाता के एपीआई का उपयोग कर एक कस्टम ट्रांसपोर्ट के साथ एक एसएमटीपी या प्रेषण परिवहन को प्रतिस्थापित कर सकें)।

0

एक ठेठ sendmail बाइनरी (जैसे पोस्टफ़िक्स से एक), भले ही PHP के mail समारोह के माध्यम से कहा जाता है, स्थानीय होस्ट करने के लिए एक तुल्यकालिक कनेक्शन खोलता है और एक पूर्ण एसएमटीपी लेनदेन आयोजित करता है। इसका मतलब यह हो सकता है कि यह वास्तव में धीमी सीधे SMTP का उपयोग करने की तुलना में है - और वास्तव में the postfix docs recommend using SMTP to localhost यदि आप प्रदर्शन की तलाश में हैं तो sendmail को वरीयता में। विशेष रूप से आप SMTP का उपयोग करके बहुत से संदेश भेजते समय रखरखाव से लाभ उठा सकते हैं।

एक चाल है कि आप sendmail (विशेष रूप से -O DeliveryMode=b) में अतुल्यकालिक संचालित करने के लिए यह बताने के लिए है, जो मामले में यह तुरंत वापस लौट, आपके मेल भेजने बनाने और अधिक उत्तरदायी करने के लिए एक अतिरिक्त पैरामीटर पारित कर सकते हैं है, लेकिन सेट अप नहीं क्योंकि पीएचपी है इसे संभालने के लिए, आप होने वाली त्रुटियों को संभालने की क्षमता खो देते हैं, इसलिए इसकी अनुशंसा नहीं की जाती है। आप इसे या तो प्रेषण बाइनरी को उन विकल्पों के साथ कॉल करके या $additional_parameters पैरामीटर में पास करके इसका उपयोग कर सकते हैं।

आम तौर पर PHPMailer में मेल और sendmail विकल्पों के बीच वास्तव में कोई अंतर नहीं है, हालांकि यह संभवतः उपयोगी हो सकता है यदि आप PHP के उपयोग के लिए सेट किए गए किसी अन्य के अलावा sendmail बाइनरी का उपयोग करना चाहते हैं।

+0

ओह nooo आप और ईमेल भेजने sendmail साथ posrtfix –

+0

नहीं भ्रमित बिलकुल। मुझे अंतर पता है, और यह जवाब सीधे सवाल को संबोधित करता है। आपके द्वारा पोस्ट किए गए उत्तर के बाद मैं आपकी राय में ज्यादा स्टॉक नहीं डालूंगा। – Synchro

0

Ussualy मैं मेल() फ़ंक्शन का उपयोग करता हूं। लेकिन कभी-कभी मुझे गैर-स्थानीय एसएमटीपी सर्वर के माध्यम से ईमेल भेजने की आवश्यकता होती है। निश्चित रूप से मैं php.ini में सेटिंग बदल सकता हूं, लेकिन मुझे लगता है कि कुछ ईमेल लाइब्रेरी का बेहतर उपयोग है। मेरा choise स्विफ्ट मेलर है।

+0

क्या गैर-स्थानीय एसएमटीपी (जीमेल की तरह) का उपयोग करने के लिए php.ini को कॉन्फ़िगर करना वाकई संभव है ?? मैं हमेशा इसके लिए sendmail का इस्तेमाल किया। क्या यह वास्तव में sendmail के बिना संभव है? यदि हाँ: जहां (php.ini के भीतर) मुझे उपयोगकर्ता नाम, पासवर्ड और एसएसएल/टीएलएस रखना चाहिए। Php.ini में अनुभाग [मेल फ़ंक्शन] ऐसी चीजों की पेशकश नहीं करता है। –

+0

मैं विंडोज सर्वर का उपयोग करता हूं।यह विकल्प अच्छा काम करता है [मेल फ़ंक्शन] ; केवल Win32 के लिए। एसएमटीपी = mail.yourserver.com smtp_port = 25 auth_username = smtp-username auth_password = smtp-password sendmail_from = [email protected] – Viktor

संबंधित मुद्दे