Vì vậy, như tiêu đề giải thích, khi gửi email HTML bằng drupal_mail (), email không có thẻ HTML.
$module = 'module';
$key = 'contact_message';
$language = language_default();
$params = array();
$email = 'sender@email.com';
$from = variable_get('site_mail', 'admin@example.com');
$send = TRUE;
$message = drupal_mail($module, $key, $email, $language, $params, $from, $send);
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8';
$message['subject'] = 'Test';
$message['body'] = array();
$message['body'][] = '<a href="#">Testing anchor in mail</a>';
$system = drupal_mail_system($module, $key);
$message = $system->format($message);
$message['result'] = $system->mail($message);
Và khi nhận email, và xem nguồn:
Message-Id: <201305090722.r497MLAV005654@test.server>
X-Authentication-Warning: testserver : www-data set sender to sender@email.com using -f
To: from@email.com
Subject: Test
X-PHP-Originating-Script: 1000:system.mail.inc
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8Bit
X-Mailer: Drupal
Sender: sender@email.com
From: from@email.com
Testing anchor in mail [1]
[1] #
Vì vậy, bạn có thể thấy rằng bất kỳ thẻ HTML đã bị tước. Và nó không quan trọng những thẻ HTML nào tôi đặt trong cơ thể.
Tôi nghĩ rằng nó có thể liên quan đến Text Fomats, nhưng tôi có các bộ lọc hoạt động "Đã lọc HTML" và "Full HTML" với bất kỳ quyền nào.
Điều làm tôi bối rối là hóa đơn Ubercart. Lúc đầu, chúng được gửi bằng HTML, và rồi đến một lúc nào đó nó dừng lại. Họ đã nhận được văn bản đơn giản. Sau khi đào một câu trả lời @develkar, tôi đã tìm thấy điều này trong một trong các bản cập nhật ubercart:
/**
* Installs HTML Mail System for Ubercart.
*/
function uc_store_update_7004() {
// Set mail handler for all Ubercart modules
variable_set('mail_system',
array_merge(
variable_get('mail_system', array('default-system' => 'DefaultMailSystem')),
array(
'uc_cart' => 'UbercartMailSystem',
'uc_order' => 'UbercartMailSystem',
'uc_file' => 'UbercartMailSystem',
'uc_roles' => 'UbercartMailSystem',
'uc_stock' => 'UbercartMailSystem',
'uc_store' => 'UbercartMailSystem',
)
)
);
}
Tôi đoán rằng tại một số điểm, một trong các mô-đun đã cài đặt (tôi nghi ngờ mô-đun SMTP) đã ghi đè biến này và đó là lý do tại sao các email đến văn bản đơn giản. Sau khi chạy lại bản cập nhật này một cách thủ công, hóa đơn Ubercat lại là HTML.
Đối với phần còn lại của email, tôi sẽ phải cài đặt một số mô-đun như được đề xuất trong các câu trả lời khác.
Thanx.