2012-01-09 10 views
5

मेरे पास मेरी कंपनी की साइट पर एक फॉर्म है जो एक नाम, टेलीफोन नंबर और टिप्पणियां (और कुछ अन्य चीजें) लेता है। टिप्पणियां बॉक्स आपको 5000 वर्णों तक टाइप करने देता है - बहुत वर्बोज़ ग्राहकों को अनुमति देने के लिए एक बड़ी सीमा। एक मान्य रूप में इसकी सामग्री php फॉर्म मेल का उपयोग करके हमारे विक्रय विभाग में एक सादे-पाठ ई-मेल के रूप में भेजी गई है।PHP - फॉर्म मेल डालने! और लंबी तारों में लाइन ब्रेक

किसी कारण से, यदि टिप्पणियां लगभग 1000 वर्णों से अधिक लंबी हैं, तो उनके पास और विस्मयादिबोधक बिंदु, एक लाइन ब्रेक, और कभी-कभी एक इंडेंट डाला जाएगा। नोट यह केवल ई-मेल पर लागू होता है; अगर फ़ॉर्म में कोई त्रुटि है, तो डेटा को फॉर्म में डाला जाता है और त्रुटियों को चिह्नित किया जाता है, और टिप्पणियों में विस्मयादिबोधक चिह्न + लाइन ब्रेक नहीं होते हैं।

मुझे इसके बारे में एक मंच पोस्ट मिला है जिसमें यह सुझाव दिया गया है कि 9 0 9 वर्णों की एक वर्ण सीमा है जो इस समस्या का कारण बनती है।

क्या किसी को कारण पता है? क्या किसी को इसके लिए काफी आसान फिक्स पता है?

प्रासंगिक PHP कोड:

$to = $email; 

$subject = "Website Order Received: $offer"; 

$contents = " 
Order Form Received -\n 
Name: $name\n 
Company: $company\n 
Email: $email\n 
Phone: $phone $phoneExt\n 
Order Contents:\n" . 
($offer == 'web-demo' ? "- I want a live software demonstration.\n" : "") . 
($offer == 'pricing' ? "- I'd like pricing information.\n" : "") . 
($offer == 'holiday-pricing' ? "- I'd like to sign up before December 31st for the special holiday offer!\n" : "") . 
($offer == 'bid-help' ? "- Please give me marketing materials and other assistance for winning bids.\n" : "") . 
($offer == 'demo-cd' ? "- Send me the full-version demonstration CD.\n" : ""); 
if (!empty ($comments)) { 
    $comments = str_replace(" 
", "\n", $comments); // Preserves line breaks in the comments. 
    $contents = $contents."\nComments: $comments\n\n"; 
} 
$contents = str_replace("\n", "\r\n", $contents); 

mail($to, $subject, $contents); 
+0

क्या आपके पास PHP स्क्रिप्ट है जो हमारे लिए निरीक्षण भेजने के लिए मेल भेजती है? –

उत्तर

7

एक ई-मेल की एक पंक्ति में वर्णों की संख्या की कोई सीमा नहीं है:

दो सीमा नहीं है कि वर्णों की संख्या पर इस मानक स्थानों एक पंक्ति में। पात्रों की प्रत्येक पंक्ति 998 वर्णों से अधिक नहीं होनी चाहिए, और सीआरएलएफ को छोड़कर 78 से अधिक वर्ण नहीं होना चाहिए। (RFC 2882)

आप इस लक्ष्य को हासिल करने के लिए PHP समारोह wordwrap उपयोग कर सकते हैं:

$contents = wordwrap($contents); 
$contents = str_replace("\n", "\r\n", $contents); 

$contents = str_replace("\n", "\r\n", $contents); 

किसी भी मामले में, यह आपके स्क्रिप्ट के साथ भेजे गए ईमेल की पठनीयता, साथ ही उन्हें मानकों का अनुपालन करने बनाने के रूप में सुधार होगा ।

+1

मुझे हैरान है कि मेल मेल स्वचालित रूप से/डिफ़ॉल्ट रूप से ऐसा नहीं करता है ... –

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