2011-10-06 18 views
11

मैं करने के लिए "Name <[email protected]>" के रूप में स्वरूपित एक ई-मेल कैसे भेज सकते हैं:प्राप्तकर्ताओं नाम में विशेष वर्ण का उपयोग कैसे करें

ŠŒŽœžŸ¥µÀÁÃÄÅÆÇÉÊËÍÎÏÐÒÓÕÖØÙÜÝßàáâåæçèéëìíîïðñóôõöøùûýÿ <[email protected]> 

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

वर्तमान में, यह विफल रहता है के रूप में

अवैध 'किया गया:' की अनदेखी के साथ अपाचे के error.log में बताया गया है प्राप्तकर्ता पता '¥ μÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ ' लेनदेन निरस्त किया गया: कोई प्राप्तकर्ताओं निर्दिष्ट

यदि संभव हो तो , मैं विशेष पात्रों को 'जैसे ही वे रखना चाहता हूं।' अन्यथा, क्या मैं नाम साफ करने के लिए कुछ प्रकार के लिप्यंतरण फ़ंक्शन का उपयोग कर सकता हूं? उपयोग के

उदाहरण:

mb_internal_encoding('UTF-8'); 

$name = '山本'; 
$email = '[email protected]'; 
$addr = mb_encode_mimeheader($name, 'UTF-8', 'Q') . " <$email>"; 

बेहतर संगतता के लिए आप शीर्ष लेख Mime-Version: 1.0 स्थापित करना चाहिए ताकि सभी मेल क्लाइंट आप समझ ':

<?php 
$to = "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ <[email protected]>"; 
$subject = "Test Subject"; 
$body = "Test Body"; 
if (mail($to, $subject, $body)) { 
    echo("<p>Message successfully sent!</p>"); 
    } else { 
    echo("<p>Message delivery failed...</p>"); 
    } 
?> 

उत्तर

16

mb_encode_mimeheader बस के रूप में उदाहरण में दिखाया गया है कि यह करना चाहिए, एमआईएम एन्कोडिंग का उपयोग कर रहे हैं।

अंतिम ईमेल हेडर इस तरह दिखना चाहिए:

To: 山本 <[email protected]> 
Subject: こんにちは 

संबंधित:

To: =?UTF-8?Q?=E5=B0=81=E3=83=90=E3=83=BC?= <[email protected]> 
Subject: =?UTF-8?Q?=E3=81=93=E3=82=93=E3=81=AB=E3=81=A1=E3=81=AF?= 
Mime-Version: 1.0 

के रूप में रेंडर, https://stackoverflow.com/a/13569317/476

+0

शायद आरएफसी 2048 में एक पॉइंटर भी जोड़ें जो इस व्यवहार को परिभाषित करता है। यदि आप ईमेल को संभालना चाहते हैं तो MIME आवश्यक है। – tripleee

+0

धन्यवाद, धन्यवाद, यह पूरी तरह से काम करता है। @tripleee आरएफसी संदर्भ के लिए धन्यवाद। मुझे यह नहीं पता था कि यह ईमेल के सभी हिस्सों पर लागू होता है। – Citricguy

+0

क्या विशेष charaters ** और ** रिक्त स्थान एन्कोड करना भी संभव है? (http://stackoverflow.com/questions/11963712/how-to-correctly-encode-strings-for-usage-in-mail-headers-in-php) दुर्भाग्यवश 'mb_encode_mimeheader' उस मामले में मदद नहीं करता है। –

1

आरएफसी-821 (2821) हमें बताता है कि सब और हेडर फ़ील्ड में 8 बिट-डेटा एन्कोड किया जाना चाहिए। बेस 64 या उद्धृत मुद्रित, जैसा कि आप चाहते हैं और कर सकते हैं। अधिकांश ई-मेल पाठक स्वचालित रूप से एन्कोडेड तारों को डीकोड करते हैं

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