2011-02-28 9 views
6

मैं पंजीकृत होने पर ग्राहकों को खाता विवरण वाले ईमेल भेजने के लिए PHP मेल फ़ंक्शन का उपयोग कर रहा हूं लेकिन मुझे केवल यह पता चला है कि कुछ लोग ईमेल प्राप्त नहीं कर रहे हैं। जैसे जब मैं जब परीक्षण केवल मुझे और एक अन्य सहयोगी ईमेलPHP मेल फ़ंक्शन कुछ पते पर ईमेल नहीं भेज रहा है

- me who received email 
- [email protected] 
- collegue who received email 
- [email protected] 
- collegue who did not receive emails: 
- email 1 - [email protected], 
- email 2 - [email protected] 
- collegue who did not receive emails: 
- [email protected] 
- collegue who did not receive emails: 
- [email protected] 

ईमेल स्पैम फोल्डर या तो ..

$from = "companyy <[email protected]>";   
$subject = "$username Account Details for companyy.co.uk";  
$message = "You have been registered as an administrator of companyy Online. 
You can manage your clients, bills and other account functions online.  

Your Username: $username 
Your Password: $password2 
Your Four-Digit PIN: $PIN   

Once logged in you can change your password to something you will find easier to remember. Please delete this email once you have changed your settings or memorised them.   

Thank you   

This is an automated response, please do not reply!"; 

mail($email, $subject, $message, $from); 
Header('Location: results.php?msg=Added Successfully'); 
+0

हालांकि वे स्पैम फ़ोल्डर में न करना पड़े, जवाब में कई बिंदुओं के लिए सवाल ("क्यों मेरी मेल स्पैम फ़ोल्डर में खत्म कर" http : //stackoverflow.com/search? q = php + spam + mail) इस पर भी लागू होता है। क्या यह स्क्रिप्ट 'companyy.co.uk' सर्वर पर चल रही है? –

+1

ईमेल भेजने पर जेफ एटवुड लेख देखें - कुछ गैर-स्पष्ट गॉथस: http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code .html –

+0

क्या आप sendmail या किस प्रकार का मेल सर्वर उपयोग कर रहे हैं? –

उत्तर

0

ऐसा प्रतीत होता है में प्राप्त नहीं कर रहे हैं प्राप्त कर रहे हैं मेरे सहकर्मियों से प्रत्येक के लिए एक ईमेल भेजने के कि ईमेल भेजे जाते हैं। समस्या प्राप्त करने वाले पक्ष पर है। स्पैम के लिए या फ़िल्टर के लिए जाँच करें। क्या भेजा गया था यह सुनिश्चित करने के लिए आप भेजे गए मेल लॉग कर सकते हैं।

+0

प्रारूपित करना भूल जाता हूं कि आप ईमेल कैसे भेजते हैं? धन्यवाद @ एल्ज़ो वालुगी – pam

+1

वे आपके सर्वर के मेल सर्वर में होंगे (जैसे कि आप यूनिक्स-आईएसएच सिस्टम पर हैं/var/log/mail)। PHP 'मेल()' वास्तव में मेल नहीं भेजता है - यह डिलीवरी करने के लिए सर्वर के मेल सर्वर पर इसे हाथ देता है। सफल वितरण के बारे में यह आपको * LIE * करेगा, क्योंकि यह सिर्फ स्थानीय हैंडऑफ करता है। –

+0

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

0

आप $email डिबग करने के लिए है, शायद यह खाली या फर्जी बताया गया है:

var_dump($email); 

लेकिन इस समस्या शायद php से संबंधित नहीं है। सबसे पहले कुछ ईमेल ब्लैकलिस्ट साइट की जांच करें, जैसे http://www.mxtoolbox.com/blacklists.aspx

यदि आप किसी भी ब्लैकलिस्ट पर अपना बॉक्स नहीं ढूंढ पा रहे हैं, तो आपको सर्वर व्यवस्थापक से संपर्क करना होगा, जिन्हें लॉग आउट करना होगा।

+0

वे खाली या फर्जी ईमेल नहीं हैं क्योंकि मैं अपने कॉलेग्यूज पते का उपयोग कर परीक्षण कर रहा हूं – pam

+0

आपने 'मेल()' से पहले चर को सही करने की कोशिश की? यदि यह वास्तव में सही ईमेल पता है, तो यह समस्या आपके पक्ष में नहीं है, आपको अपने सिस्टम व्यवस्थापक से संपर्क करना होगा। – Eduard7

0

आपके पास एक आईपी पता हो सकता है जिसे साझा किया गया होस्टिंग में साझा किया गया है। या तो सर्वर को ले जाने या या ईमेल sendgrid को postmarkapp आउटसोर्स

0

अपने संदेश की जाँच करें और सुनिश्चित करें कि यह w अलग है बनाने/PHP_EOL

संदेश भेजे जाने के लिए।

प्रत्येक पंक्ति को एलएफ (\ n) से अलग किया जाना चाहिए। पंक्तियों को 70 वर्णों से बड़ा नहीं होना चाहिए।

जैसे:

$message = 'This message was sent via PHP!' . PHP_EOL . 
      'It should work ... and it does.' . PHP_EOL . PHP_EOL . 
      'From Display Name' . PHP_EOL; 
// In case any of our lines are larger than 70 characters, we should use wordwrap() 
$message = wordwrap($message, 70); 

PHP mail

7

का उपयोग करते समय यहाँ ईमेल भेजने के बारे में एक गंदा थोड़ा रहस्य है: आप नियंत्रण खो देते हैं। एक बार जब वे आपके सर्वर को छोड़ देते हैं, तो यह इंटरनेट देवताओं की कृपा से होता है कि आपका ईमेल इसके गंतव्य तक पहुंच जाता है। जिस तरह से यह एक नेटवर्क से अगले नेटवर्क तक "हैंडशेक" है। यह अपने अंतिम गंतव्य तक पहुंचता है और फिर स्पैम फिल्टर और नियमों के बहुत से लोगों के अधीन है कि कई तकनीकी लोग अंधेरे में हैं। उदाहरण के लिए, क्या आप जानते थे कि एमएसएन हॉटमेल, एओएल, आदि एक सर्वर (आईपी रेंज) से एक निश्चित संख्या में ईमेल से अधिक स्वीकार नहीं करेंगे? एक बार जब आप सर्वर की पूर्व निर्धारित (और अप्रकाशित) सीमा को दबाएंगे, तो ईमेल को स्पैम रेटिंग के बावजूद रखा जाएगा। आखिरकार इसे छोड़ दिया जाएगा, लेकिन इसका मतलब है कि आपके उपयोगकर्ता द्वारा पासवर्ड अनुरोध तात्कालिक नहीं होगा। यहां एक और बोली है - सर्वर डोमेन की दीर्घायु और अन्य कारकों के आधार पर "ट्रस्ट" प्राप्त करते हैं जो अप्रकाशित भी हैं। क्या आपका डोमेन लंबा रहा है? क्या आप blacklist पर सूचीबद्ध हैं? क्या ईमेल "स्पैममी" है (like this के साथ जांचें)

फिर एओएल जैसी साइटें हैं जहां अच्छी गुणवत्ता वाले सर्वर से भी अच्छी गुणवत्ता वाली ईमेल नियमितता के साथ वितरित नहीं होती है। (कुछ मजेदार पढ़ने के लिए Google "एओएल डिलीवरी योग्यता")

तो, क्या करना है? ब्लैकलिस्ट जांच के साथ शुरू करें। यदि यह अच्छा है, तो हेडर की जांच करें। क्या "से" पता उस डोमेन से मेल खाता है जिस पर ईमेल भेजा जा रहा है और वह खाता मान्य है?यह एक बड़ा स्पैम लाल झंडा हो सकता है। इस समस्या से बचने के लिए, मेरी कंपनी (जो प्रति दिन 50,000+ ईमेल भेजती है) आम तौर पर खातों को "डमी" उत्तर देती है। क्या आप उन उपयोगकर्ताओं के लिए श्वेतसूची में हैं जिनके साथ आप परीक्षण कर रहे हैं? क्या उपयोगकर्ता आउटलुक जैसे प्रोग्राम का उपयोग कर रहे हैं जो यादृच्छिक रूप से अपनी ब्लैकलिस्टिंग करता है? अपना संदेश बदलें और देखें कि क्या वितरण योग्यता में सुधार होता है। यह देखने के लिए कि क्या यह सिर्फ एक विशेष प्रणाली है, कई अलग-अलग मेजबानों के साथ परीक्षण करें।

रिंस करें, दोहराएँ, और जारी रखने के लिए ...

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