我有一个自定义模块,我正在尝试使用drupal_mail函数生成HTML电子邮件(D7)。邮件正在通过,甚至显示text / html,但是某些地方似乎在它到达收件箱之前剥离了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);
}
我希望通过我的标签和br标签来发送电子邮件,但它会通过这样的方式来实现:
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
不知怎的,它正在取消我的链接,并在完全删除br标签时将它们变成脚注。
您可以提供任何帮助,我们将不胜感激。谢谢!
答案 0 :(得分:4)
开箱即用,Drupal无法发送HTML电子邮件。为了让Drupal支持HTML电子邮件,您需要HTML Mail模块。 http://drupal.org/project/htmlmail完成后,所有HTML都应该这样发送。
答案 1 :(得分:0)
这是一种完全表达的替代方法。首先,安装并启用Mime Mail模块。您可以阅读README.txt以获取有关如何使用它的完整说明。我会给你简短的版本。
您需要为模块启用Mime Mail。您可以使用hook_enable
中的hook_update_N
或example.install
:
function example_enable() {
mailsystem_set(array(
'example_examplekey' => 'MimeMailSystem',
));
}
当您转到admin/config/system/mailsystem
时,您会看到为您的模块添加了新条目:
示例模块(examplekey key)类
MimeMailSystem
现在您不再需要具体说明任何text/html
标题,Mime Mail会处理此问题。所以你不需要这个:
$headers['Content-Type'] = ...
如果需要,可以将$message['plaintext']
添加到邮件中以获取非HTML替代方案,但这不是必需的。
就是这样!