2011-02-14 13 views
5

PHP के साथ बड़े पैमाने पर मेल भेजते समय, प्रत्येक ग्राहक को एक ई-मेल (सभी ई-मेल पते के माध्यम से लूप के लिए चलाना) भेजना बेहतर होता है या यह बेहतर है कि सभी को अल्पविराम से अलग सूची में बीसीसी में जोड़ना बेहतर हो और इस प्रकार केवल एक ई-मेल भेजना?PHP बड़े पैमाने पर मेल भेज रहा है: प्रत्येक के लिए प्रत्येक के लिए एक?

धन्यवाद।

उत्तर

4

एक अच्छा मौका है कि बीसीसी क्षेत्र में पते की संख्या SMTP सर्वर (स्पैमिंग से बचने के लिए) पर सीमित है। मैं सुरक्षित मार्ग के साथ जाऊंगा और प्रत्येक ग्राहक को ई-मेल भेजूंगा। यदि आवश्यक हो तो यह आपको प्रत्येक ग्राहक के लिए ई-मेल को कस्टमाइज़ करने की अनुमति देगा।

यह भी ध्यान रखें कि मेल() शायद थोक मेल भेजने का सबसे अच्छा तरीका नहीं है (इस तथ्य के कारण कि यह हर बार एसएमटीपी सर्वर के साथ एक नया कनेक्शन खुलता है)। आप PEAR::Mail में देखना चाह सकते हैं।

+0

पीयर सुझाव के लिए धन्यवाद। – Francisc

1

सर्वोत्तम अभ्यास प्रति प्राप्तकर्ता ईमेल भेजने के लिए है।

यदि यह एक लिनक्स मेल सर्वर है, तो यह बड़े पैमाने पर थ्रुपुट को संभाल सकता है, इसलिए वॉल्यूम एक मुद्दा नहीं होना चाहिए जब तक यह एक बकवास सर्वर न हो!

यदि यह एक साझा वेबसर्वर है तो आपका होस्ट खुश नहीं हो सकता है - यदि यह मामला है तो मैं इसे चुपके में विभाजित कर दूंगा और भेज दूंगा। यदि यह समर्पित है तो आप करेंगे :)

+0

धन्यवाद, ब्रायन। – Francisc

1

यदि किसी बीसीसी प्राप्तकर्ताओं में से किसी एक के लिए भेजने की प्रक्रिया विफल हो गई है (उदाहरण कारण मुझे अनजान डोमेन हो सकता है), तो पूरा ऑपरेशन रद्द कर दिया जाएगा (जो 99% मामलों अवांछित व्यवहार)।

मैं एक PHP लूप में ईमेल भेजता हूं, भले ही ईमेल में से कोई एक ईमेल भेजने में विफल रहता है, अन्य ईमेल भेजे जाएंगे।

+0

मैंने कभी भी किसी भी मेल सर्वर द्वारा इस व्यवहार का अनुभव नहीं किया है, क्या आप शायद इस जानकारी के लिए स्रोत प्रदान कर सकते हैं? –

+0

@ विक्टर वेलिंग मुझे यह काम पर सामना करना पड़ा, हालांकि मुझे सटीक मेल सर्वर सॉफ़्टवेयर नहीं पता है। –

1

जैसा कि अन्य कहते हैं कि प्रति प्राप्तकर्ता एक मेल बेहतर फिट है।

आप एक पुस्तकालय, एक कोशिश SwiftMailer आप के लिए गंदा काम करते हैं देना चाहते हैं http://swiftmailer.org

यहाँ एक उदाहरण सीधे डॉक्स से है:

require_once 'lib/swift_required.php'; 

//Create the Transport 
$transport = Swift_SmtpTransport::newInstance('localhost', 25); 

//Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

//Create a message 
$message = Swift_Message::newInstance('Wonderful Subject') 
    ->setFrom(array('[email protected]' => 'John Doe')) 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 
    ->setBody('Here is the message itself') 
    ; 

//Send the message 
$numSent = $mailer->batchSend($message); 

printf("Sent %d messages\n", $numSent); 

/* Note that often that only the boolean equivalent of the 
    return value is of concern (zero indicates FALSE) 

if ($mailer->batchSend($message)) 
{ 
    echo "Sent\n"; 
} 
else 
{ 
    echo "Failed\n"; 
} 

*/ 

यह भी एक अच्छा Antiflood प्लगइन है : http://swiftmailer.org/docs/antiflood-plugin-howto