2012-08-29 18 views
5

Mam niestandardowy moduł, który próbuję wygenerować wiadomości e-mail HTML z wykorzystaniem funkcji drupal_mail (D7). Mail nadchodzi, a nawet pokazuje tekst/html, jednak coś, co wydaje się gdzieś odpychać HTMl, zanim trafi do skrzynki odbiorczej.Drupal 7 drupal_mail zdejmowanie HTML?

Po pierwsze, w zależności buduję mój tytuł/Ciało/inne Vars i wysyłanie do niestandardowych funkcji:

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

Wtedy mam latch_mail funkcji 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']; 
} 

i

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

Oczekuję, że e-maile przejdą z moimi tagami i tagami br, ale przychodzi thro W ten sposób:

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 

Jakoś to bierze moje linki i zmienia je w przypisy przy całkowitym usunięciu tagów br.

Każda pomoc, jaką możesz zapewnić, byłaby doceniana. Dzięki!

Odpowiedz

4

Po wyjęciu z pudełka Drupal nie może wysyłać wiadomości e-mail w formacie HTML. Aby Drupal obsługiwał wiadomości HTML, potrzebujesz modułu HTML Mail. http://drupal.org/project/htmlmail Po tym, że cały HTML powinien zostać wysłany jako taki.

0

Oto alternatywna metoda z pełnym wyjaśnieniem. Przede wszystkim zainstaluj i włącz moduł Mime Mail. Możesz przeczytać README.txt, aby uzyskać pełne instrukcje, jak z niego korzystać. Dam ci krótką wersję.

Musisz włączyć Mime Mail dla swojego modułu. Można to zrobić za pomocą hook_enable lub hook_update_N w example.install:

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

Gdy idziesz do admin/config/system/mailsystem widać, że nowy wpis został dodany do modułu:

Przykład moduł (klawisz examplekey) Klasa

MimeMailSystem

teraz nie trzeba spe Cificy żadnych nagłówków text/html, Mime Mail zajmuje się tym. Więc nie trzeba tego:

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

Jeśli chcesz, możesz dodać $message['plaintext'] do poczty na alternatywę niż HTML, ale nie jest to wymagane.

To wszystko!