2008-10-02 11 views
10

के लिए मुझे क्या चाहिए, मैं एक साइट से एक ईमेल भेजने की कोशिश कर रहा हूं, लेकिन यह याहू स्पैम फ़ोल्डर में समाप्त होता है। यह वह ईमेल है जो प्रमाण-पत्र भेजता है। इसे वैध बनाने के लिए मैं क्या कर सकता हूं?मुझे एक अनुपालन ईमेल हेडर

$header = "From: site <[email protected]>\r\n"; 
$header .= "To: $name <$email>\r\n"; 
$header .= "Subject: $subject\r\n"; 
$header .= "Reply-To: site <[email protected]>" . "\r\n"; 
$header .= "MIME-VERSION: 1.0\r\n"; 
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$phpversion = phpversion(); 
$header .= "X-Mailer: PHP v$phpversion\r\n"; 
mail($email,$subject,$body,$header); 

उत्तर

2

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

10
  • अपने ईमेल में HTML का उपयोग न करें।
  • इसे एक वैध आईपी और रिवर्स-डीएनएस (पीटीआर) के साथ एक वैध मेल सर्वर के माध्यम से भेजें जो मशीन के वास्तविक होस्ट नाम को इंगित करता है (और आगे लुकअप से मेल खाता है)।
  • एक संदेश-आईडी शामिल करें (या सुनिश्चित करें कि स्थानीय मेलर आपके लिए एक जोड़ता है)।
  • SpamAssassin के माध्यम से अपना ईमेल चलाएं और देखें कि यह कौन-से खराब-स्कोरिंग नियमों से मेल खाता है। उनसे मिलान करने से बचें।
  • अपने संदेशों को डिजिटल हस्ताक्षर करने के लिए DomainKeys Identified Mail का उपयोग करें।
1

Ted Percival's suggestions के अलावा, यकीन है कि आईपी पते ईमेल से आ रही है site.com के SPF record के अनुसार ईमेल के लिए एक वैध स्रोत है कि सुनिश्चित करें। यदि साइट.com में एसपीएफ़ रिकॉर्ड नहीं है, तो एक जोड़ना (जो निश्चित रूप से आईपी पते को प्रश्न में अनुमति देता है) स्पैम फिल्टर के पिछले ईमेल प्राप्त करने में मदद कर सकता है।

और अगर आपको अपने ईमेल में एचटीएमएल का उपयोग करने की ज़रूरत है, तो सुनिश्चित करें कि आप एक सादे पाठ संस्करण भी शामिल करते हैं; आप "टेक्स्ट/एचटीएमएल" के बजाय "मल्टीपार्ट/वैकल्पिक" सामग्री प्रकार का उपयोग करेंगे।

4

मैंने सफलतापूर्वक अपने याहू से निम्नलिखित कोशिश की! वेब होस्टिंग खाता:

 
$email = "[email protected]"; 
$subject = "Simple test"; 
$body = "Simple test"; 
$header = "From: site \r\n"; 
$header .= "To: $name \r\n"; 
$header .= "Subject: $subject\r\n"; 
$header .= "Reply-To: site " . "\r\n"; 
$header .= "MIME-VERSION: 1.0\r\n"; 
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$phpversion = phpversion(); 
$header .= "X-Mailer: PHP v$phpversion\r\n"; 
mail($email,$subject,$body,$header); 

लेकिन, आप अपने शीर्षक में कुछ दोहराव है आप केवल निम्न कार्य करने चाहिए:

 
$email = "[email protected]"; 
$subject = "Simple test"; 
$body = "Simple test"; 
$header = "From: site \r\n"; 
$header .= "MIME-VERSION: 1.0\r\n"; 
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$phpversion = phpversion(); 
$header .= "X-Mailer: PHP v$phpversion\r\n"; 
mail($email,$subject,$body,$header); 
1

टेड के सुझाव मैं एक ही रास्ता के रूप में टिम कर रहे हैं, अच्छे हैं, लेकिन कभी भी पीईएआर ईमेल कक्षाओं का उपयोग करने के लिए याहू/हॉटमेल/आदि के माध्यम से विश्वसनीय रूप से ईमेल प्राप्त करने में सक्षम है। उन & को आज़माएं (मान लें कि आपका सर्वर ठीक है) मैं बहुत अधिक गारंटी दे सकता हूं कि यह काम करेगा।

0

ईमेल प्रारूप के लिए आरएफसी 822 और आरएफसी 2045 देखें। मुझे पाइथन की ईमेल क्लास के साथ काम करना वास्तव में आसान लगता है। मुझे लगता है कि PHP का पियर वही करता है (पहले के मेल के अनुसार)। इसके अलावा हेडर और बॉडी को "\ r \ n \ r \ n" से अलग किया जाता है, यह सुनिश्चित न करें कि आपका कोड स्वचालित रूप से उस पर सम्मिलित होता है, लेकिन आप इसे शीर्षलेख में जोड़ने का प्रयास कर सकते हैं।

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

1

टेड और टिम के पास उत्कृष्ट सुझाव हैं। जैसा शबबीरोब करता है। हम PHPMailer का उपयोग करते हैं और स्पैम फ़िल्टर के साथ कोई समस्या नहीं है।

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

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

0

एसपीएफ़ रिकॉर्ड जोड़ना बहुत आसान है। तुम्हें कोशिश करनी चाहिए।

यह एक Dreamhost प्लस googlemail आप विज्ञापन आप आईपी पते वेबसर्वर चाहिए के लिए है (मेरे मामले में, googlemail से पहले लाइन) अंतिम पंक्ति सर्वर बताता है एक नरम अस्वीकार (स्पैम के रूप में मार्क लेकिन नहीं करने के लिए हटाना) मैं इसे उपयोग कर रहा हूँ के बजाय "-" (हटाना) क्योंकि गूगल प्रलेखन कहते हैं तो :-)

यह एक TXT रिकॉर्ड वी = spf1 है ip4: 64.111.100.0/24 ip4: 66.33.201.0/24 आईपी ​​4: 66.33.216.0/24 आईपी 4: 208.97.132.0/24 आईपी 4: 208.97.187.0/24 आईपी 4: 208.113.200.0/24 आईपी 4: 208.113.244.0/24 आईपी 4: 208.97.132.74 आईपी 4: 67.205.36.71 में शामिल हैं: aspmx.googlemail.com mx ~ सभी

आशा है कि यह मदद करता है

2

वहाँ भी संभावना है कि 'sendmail' (जो नीचे पीएचपी मेल() फ़ंक्शन है) अतिरिक्त पैरामीटर की जरूरत है। यदि आपको रिटर्न हेडर (जैसे रिटर्न-पथ) के साथ कोई समस्या नहीं है जो आप उन्हें सेट करने के साथ सेट नहीं कर रहे हैं, तो आपको पांचवें मेल() पैरामीटर का उपयोग करने की आवश्यकता हो सकती है। उदाहरण:

mail('[email protected]', 'Subject', $mail_body, $headers, " -f [email protected]"); 

कुछ आगे सबूत असली वैनिला sendmail इस के साथ समस्या हो सकती है कि नहीं है! उम्मीद है कि आपके पास अपने लक्ष्य सर्वर पर PHP के अंतर्निहित मेल() समर्थन के रूप में 'पोस्टफिक्स' है।