2012-08-29 25 views
5

drupal_mail işlevini (D7) kullanarak bir HTML e-postası oluşturmaya çalıştığım özel bir modülüm var. Posta geliyor ve hatta metin/html gösteriyor, ancak bir yerlerden gelenler bir kutuya gelmeden önce HTM'yi çıkaracak gibi görünüyor.Drupal 7 drupal_mail HTML'yi mi çıkarıyor?

İlk olarak bir işlevi benim başlık/beden/diğer değişkenler inşa ediyorum ve özel bir işleve gönderme:

$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); 

Sonra sahip latch_mail latch_send_email fonksiyonlar:

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']; 
} 

ve

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); 
} 

E-postaların bir etiketim ve br etiketlerimden geçmesini beklerim, ancak yine de öf böyle:

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 

nasılsa benim bağlantıları alarak tamamen br etiketleri kaldırın ve dipnotlar dönüştürerek ediyor

.

Verebileceğiniz herhangi bir yardım için teşekkür ederiz. Teşekkürler!

cevap

4

Kutunun dışında, Drupal HTML e-postası gönderemez. Drupal'ın HTML e-postasını desteklemesi için HTML Mail modülüne ihtiyacınız var. http://drupal.org/project/htmlmail Bunu bir kez daha gönderdiyseniz, tüm HTML'ler böyle gönderilmelidir.

0

İşte tam bir açıklamayla alternatif bir yöntem. Her şeyden önce, Mime Mail modülünü kurun ve etkinleştirin. Nasıl kullanılacağı hakkında tam talimatlar için README.txt'u okuyabilirsiniz. Size kısa versiyonu vereceğim.

Modülünüz için Mime Mail'i etkinleştirmeniz gerekir. Sen example.install yılında hook_enable veya hook_update_N kullanarak bunu yapabilirsiniz:

Örnek modülü (examplekey tuşu) sınıfı: Eğer admin/config/system/mailsystem gittiğinizde

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

Eğer yeni bir giriş sizin modül için eklendiğini göreceksiniz

MimeMailSystem

Şimdi

sen sPE gerekmez artık herhangi bir text/html başlıkları, Mime Mail bununla ilgilenir. İsterseniz bir HTML olmayan alternatif postanıza $message['plaintext'] ekleyebilir,

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

, ancak bu gerekli değildir: Yani bu gerekmez.

Bu kadar!