2012-08-29 35 views
5

Tôi có một mô-đun tùy chỉnh mà tôi đang cố tạo email HTML từ việc sử dụng hàm drupal_mail (D7). Mail đang đến, và thậm chí còn hiển thị text/html, tuy nhiên một cái gì đó ở đâu đó dường như đang loại bỏ HTMl trước khi nó đến hộp thư đến.Drupal 7 drupal_mail tước HTML?

Thứ nhất, trong một chức năng Tôi đang xây dựng tiêu đề/body/vars khác của tôi và gửi đến một chức năng tùy chỉnh:

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

Sau đó, tôi có các chức năng latch_send_email latch_mail:

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

Tôi hy vọng các email sẽ đi kèm với thẻ của tôi và thẻ br, nhưng nó đến ugh như thế này:

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 

Bằng cách nào đó liên kết và chuyển chúng thành chú thích cuối cùng trong khi xóa thẻ br hoàn toàn.

Bất kỳ trợ giúp nào bạn có thể cung cấp đều sẽ được đánh giá cao. Cảm ơn!

Trả lời

4

Hết hộp, Drupal không thể gửi email HTML. Để Drupal hỗ trợ email HTML, bạn cần mô-đun HTML Mail. http://drupal.org/project/htmlmail Một khi bạn có tất cả các HTML nên được gửi như vậy.

0

Dưới đây là phương pháp thay thế với lời giải thích đầy đủ. Trước hết, hãy cài đặt và kích hoạt mô-đun Mime Mail. Bạn có thể đọc số README.txt để có hướng dẫn đầy đủ về cách sử dụng nó. Tôi sẽ cung cấp cho bạn phiên bản ngắn.

Bạn cần bật Mime Mail cho mô-đun của mình. Bạn có thể làm điều này bằng hook_enable hoặc hook_update_N trong example.install:

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

Khi bạn đi đến admin/config/system/mailsystem bạn sẽ thấy rằng một mục mới đã được thêm vào cho mô-đun của bạn:

Ví dụ mô-đun (key examplekey) lớp

MimeMailSystem

Bây giờ bạn không cần phải SPE cificy bất kỳ tiêu đề text/html nữa, Mime Mail sẽ xử lý vấn đề này. Vì vậy, bạn không cần điều này:

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

Nếu bạn muốn, bạn có thể thêm $message['plaintext'] đến mail của bạn cho một lựa chọn không phải là HTML, nhưng điều này là không cần thiết.

Vậy đó!

Các vấn đề liên quan