2012-08-29 38 views
5

मेरे पास एक कस्टम मॉड्यूल है जिसे मैं drupal_mail फ़ंक्शन (D7) का उपयोग करने से HTML ईमेल उत्पन्न करने का प्रयास कर रहा हूं। मेल आ रहा है, और यहां तक ​​कि टेक्स्ट/एचटीएमएल भी दिखाता है, हालांकि कुछ ऐसा कहीं भी एक इनबॉक्स में आने से पहले एचटीएमएल को अलग कर रहा है।ड्रूपल 7 drupal_mail HTML को अलग करना?

सबसे पहले, एक समारोह में मैं अपने शीर्षक/शरीर/अन्य वार्स निर्माण कर रहा हूँ और एक कस्टम समारोह के लिए भेजने से:

$body = "We thought you'd like to know that ".$fullname." has marked your project as completed. 
    <br /><br /> 
    Please visit the link at <a href='http://".$_SERVER['HTTP_HOST']."/survey/customer/".$customer[0]->unique_id."'>http://".$_SERVER['HTTP_HOST']."/survey/customer/".$customer[0]->unique_id."</a> to take the survey."; 
    $returnMail = latch_send_mail('pro_realized',$customer[0]->customer_email,$user->mail,$title,$body); 

तो मेरे पास है latch_mail latch_send_email कार्य:

function latch_mail($key, &$message, $params) { 
    $headers = array(
    'MIME-Version' => '1.0', 
    'Content-Type' => 'text/html; charset=UTF-8; format=flowed', 
    'Content-Transfer-Encoding' => '8Bit', 
    'X-Mailer' => 'Drupal' 
); 

foreach ($headers as $key => $value) { 
    $message['headers'][$key] = $value; 
} 

$message['body'][] = $params['body']; 
$message['subject'] = $params['subject']; 
} 

और

function latch_send_mail($key,$to,$from,$title,$body,$headers='') { 
    $params['body']=$body; 
    $params['subject'] = t($title); 
    return drupal_mail('latch', $key, $to, language_default(), $params, $from,TRUE); 
} 

मैं उम्मीद करता हूं कि ईमेल मेरे टैग और ब्र टैग के साथ आते हैं, लेकिन यह thro आता है इस तरह:

We thought you'd like to know that John Doe has marked your project as completed. Please visit the link at http://latch.local/survey/customer/34c91b8883cd70b32c65feb7adf9c393 [1] to take the survey. [1] http://latch.local/survey/customer/34c91b8883cd70b32c65feb7adf9c393 

किसी भी तरह से यह मेरे लिंक ले रहा है और ब्रांड्स को पूरी तरह से हटाते समय उन्हें फुटनोट में बदल रहा है।

कोई भी सहायता जो आप प्रदान कर सकते हैं उसकी सराहना की जाएगी। धन्यवाद!

उत्तर

4

बॉक्स के बाहर, ड्रूपल HTML ईमेल नहीं भेज सकता है। ड्रापल के लिए एचटीएमएल ईमेल का समर्थन करने के लिए आपको HTML मेल मॉड्यूल की आवश्यकता है। http://drupal.org/project/htmlmail एक बार जब आपके पास यह है कि सभी HTML को इस तरह भेजा जाना चाहिए।

0

यहां एक पूर्ण व्याख्या के साथ एक वैकल्पिक विधि है। सबसे पहले, Mime Mail मॉड्यूल स्थापित करें और सक्षम करें। इसका उपयोग करने के तरीके पर पूर्ण निर्देशों के लिए आप README.txt पढ़ सकते हैं। मैं आपको लघु संस्करण दूंगा।

आपको अपने मॉड्यूल के लिए माइम मेल सक्षम करने की आवश्यकता है। आप example.install में hook_enable या hook_update_N का उपयोग कर ऐसा कर सकते हैं:

उदाहरण मॉड्यूल (examplekey कुंजी) वर्ग:

function example_enable() { 
    mailsystem_set(array(
    'example_examplekey' => 'MimeMailSystem', 
)); 
} 

जब आप admin/config/system/mailsystem करने के लिए जाना आपको लगता है कि एक नई प्रविष्टि अपने मॉड्यूल के लिए जोड़ दिया गया है देखेंगे

MimeMailSystem

अब आप विशेष की जरूरत नहीं है cificy किसी भी text/html हेडर अब, माइम मेल इसका ख्याल रखता है। तो आप इस जरूरत नहीं:

$headers['Content-Type'] = ... 

यदि आप चाहते हैं, तो आप एक गैर- HTML विकल्प के लिए अपने मेल पर $message['plaintext'] जोड़ सकते हैं, लेकिन यह जरूरी नहीं है।

यही है!