2009-08-12 15 views
8

के लिए मैं PHP के लिए नया हूं, लेकिन चीजों का एक सभ्य समझ है (अभी तक कक्षाएं नहीं सीखी हैं)।PHPMailer v। Mail() एक साधारण संपर्क फ़ॉर्म

प्रश्न:

कौन सा चुनने के लिए? मेरे नए संपर्क फ़ॉर्म के लिए PHPMailer या मेल()।

प्रपत्र सरल है:

Your name: 
Your email: 
Subject: 
Body: 

मैं प्रतिदिन लगभग 2,000 आगंतुकों है और प्रति दिन के बारे में 10 प्रस्तुतियाँ प्राप्त करते हैं, तो मैं कुछ भी भी फैंसी जरूरत नहीं है। =)

मेरे सिर में विविध सवाल: इंजेक्शन (प्रमुख चिंता का विषय):

  • PHPMailer बेहतर सीसी से मेरा संपर्क प्रपत्र की रक्षा करने वाला है? मुझे पहले से ही anti-spambot display:none CSS चाल पता है।
  • क्या PHPMailer मुझे email_validator() फ़ंक्शन लिखने का चरण बचाएगा?
  • क्या PHPMailer मुझे कोई कस्टम फ़ंक्शन लिखने का कोई अन्य समय बचाएगा?

धन्यवाद! किसी भी भाग्य के साथ, मैं जल्द ही सवालों का जवाब दूंगा। लॉल

उत्तर

11

यहां मैं बस एक बैठक में सोच सकता हूं, अगर कोई चमकदार चूक हो तो मुझे माफ़ कर दो।

पीएचपी के अंतर्निहित मेल समारोह, कोई बाहरी पुस्तकालय/आवरण का उपयोग करने के लाभ:

  • आप पीएचपी के बाहर कुछ भी जरूरत नहीं है।
  • आपको एक नई एपीआई सीखने की आवश्यकता नहीं है।
  • आपको किसी PHP अपग्रेड या स्क्रिप्ट को तोड़ने की चिंता करने की आवश्यकता नहीं है।
  • आपको अपडेटेड संस्करण के बारे में चिंता करने की ज़रूरत नहीं है जो आपके PHP स्थापना पर काम नहीं कर रहा है।
  • आपको उस स्क्रिप्ट का उपयोग करने के परिणामस्वरूप संभावित सुरक्षा भेद्यता के बारे में चिंता करने की आवश्यकता नहीं है।
  • यदि यह एक आसान काम है, तो आप कुछ ही मिनटों में कर लेंगे। एक बाहरी पुस्तकालय/आवरण का उपयोग करने के

लाभ:

  • आप अपने ईमेल में और अधिक जटिलता को पेश करने की जरूरत है, तो आप तो काफी आसानी से कर सकते हैं। अनुलग्नक, इनलाइन छवियां और जोड़ना PHP सादा मेल फ़ंक्शन का उपयोग करके बहुत मजेदार नहीं है।बाहरी पुस्तकालय ( कम से कम अच्छे वाले) में ओओपीश एपीआई है। एक अनुलग्नक जोड़ना जैसे जोड़ने संलग्नक, चरित्र एन्कोडिंग और इनलाइन चित्र, हेडर के साथ चारों ओर खेलने के लिए आदि
  • बाहरी पुस्तकालयों बेहतर छिपाने कार्यों की बदसूरत जटिलताओं बिना $message->addAttachment($file); के रूप में के रूप में आसान हो सकता है।
  • एक पुस्तकालय का उपयोग करते हुए अब आप भविष्य में यह जानने के लिए जब आप कर होने के परेशानी की बचत होगी अतिरिक्त जटिलता/कार्यक्षमता की जरूरत है।
  • बाहरी पुस्तकालयों शायद (मैं वास्तव में यकीन है कि कौन सा है, और किस हद तक नहीं कर रहा हूँ) कुछ कमजोरियों पीएचपी का मेल नहीं है कि संबोधित करते हैं।

यदि मैं किसी और चीज के बारे में सोच सकता हूं, तो मैं इसे जोड़ना सुनिश्चित कर दूंगा।

+0

अच्छी चीजें। क्योंकि मुझे HTML क्षमताओं, अनुलग्नक आदि की आवश्यकता नहीं है, इसलिए मैं मेल() की तरफ झुका रहा हूं। – Jeff

+0

@ जेफ - मैं अपने सभी ईमेल सामानों के लिए ज़ेंड_Mail का उपयोग करता हूं। उस ने कहा, मैं शायद मेल() का उपयोग करता हूं अगर यह आपके प्रश्न में वर्णित कुछ की तरह था। आपको यहां किसी भी एक उत्तर के आधार पर निर्णय नहीं लेना चाहिए, बल्कि आपकी विशिष्ट स्थिति के विस्तृत विश्लेषण पर, जो केवल आप कर सकते हैं। – karim79

0

PHPMailer मेरी पसंद है क्योंकि यह मुझे किसी भी पुस्तकालय स्थापित करने या मेलसर्वर को कॉन्फ़िगर किए बिना Google को SMTP ई-मेल भेजने की अनुमति देता है, इस तरह मुझे स्पैम से संबंधित समस्याओं के बारे में चिंता करने की आवश्यकता नहीं है।

+0

हाय एबल्स, मुझे यह उल्लेख करना चाहिए कि मेरा मेल सर्वर आसानी से चल रहा है, जीमेल की कोई ज़रूरत नहीं है या ऐसा कुछ भी पसंद नहीं है। – Jeff

1

यह शायद वास्तव में आपके सभी सवालों के जवाब नहीं होगा, लेकिन यह या तो चोट नहीं होगा, मुझे लगता है ...

आप जो भी करना चाहते हैं, मैं mail() साथ जाना नहीं होगा: एक मेल भेजने है इतना आसान काम नहीं है, और मौजूदा पुस्तकालय/ढांचे का उपयोग करना हमेशा एक अच्छा विचार होगा: इससे कई समस्याओं को हल किया जाएगा जिनके बारे में आपने शायद सोचा नहीं है - भले ही आपको बहुत सारे मेल भेजने की आवश्यकता न हो।


अपने विशिष्ट प्रश्न के बारे में, हो सकता है अन्य उत्तर कुछ और कहेंगे और/या अपने अधिक जानकारियां मिलता है, लेकिन किसी भी "अच्छा" बनाया पुस्तकालय मेल समस्याओं के उन प्रकार के साथ सौदा करना चाहिए भेजने के लिए ... नहीं तो, आपको चाहिए शायद एक और पुस्तकालय ^^

के लिए खोज फिर भी, गूंगा गैर पतों की एक जोड़ी का परीक्षण 100% सुनिश्चित ;-)


एक अन्य समाधान काफी सुनिश्चित करने के लिए किया जा करने की अनुमति देगा के स्रोत की जांच करने के लिए है पुस्तकालय ;-)

संस्करण 2.2.1 के स्रोत में, आप इस तरह सामान मिल जाएगा:

class.phpmailer.php, समारोह AddAnAddress, लाइन 413, तो आप इस देखेंगे:

if (!self::ValidateAddress($address)) { 
    $this->SetError($this->Lang('invalid_address').': '. $address); 
    if ($this->exceptions) { 
    throw new phpmailerException($this->Lang('invalid_address').': '.$address); 
    } 
    echo $this->Lang('invalid_address').': '.$address; 
    return false; 
} 

और यह इस समारोह प्रयोग किया जाता है लगता है अन्य कार्यों द्वारा जो एक पता जोड़ते हैं ...तो, मैं वहाँ ईमेल पतों का सत्यापन ;-) किसी तरह का है लगता है
कि आपके प्रश्नों ^^


PHPMailer एकमात्र समाधान है कि मौजूद है, btw नहीं है कम से कम एक जवाब देंगे; दूसरों के बहुत सारे है, जैसे उदाहरण के लिए, देखते हैं:

1

के रूप में पास्कल मार्टिन उल्लेख किया है, एक ईमेल भेज कुछ लोगों को लगता है कि यह सीधे आगे और आसान नहीं है। सीधे अपने प्रश्नों का उत्तर देने के लिए। हां PHPMailer कुछ सत्यापन करता है, लेकिन यह सुपर-उन्नत नहीं है, लेकिन आपके उपयोग के लिए पर्याप्त होना चाहिए। और PHPMailer आपको कुछ कस्टम कार्य करने के आधार पर आपको कुछ समय बचाएगा। कुछ चीजों पर विचार करने के लिए हालांकि:

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

इसके अलावा बस PHPMailer Zend_Mail (Zend Framework का यह हिस्सा) के लिए बाहर की जाँच के लिए एक अच्छा एक है करने के लिए। हालांकि यह एक साधारण संपर्क फ़ॉर्म के लिए थोड़ा सा हो सकता है।

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