Wie der Titel erklärt, enthält die E-Mail beim Senden einer HTML-E-Mail mit drupal_mail () keine HTML-Tags.
$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);
Und wenn Sie die E-Mail empfangen und die Quelle anzeigen:
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] #
So können Sie sehen, dass alle HTML-Tags entfernt wurden. Und es spielt keine Rolle, welche HTML-Tags ich in den Body eingefügt habe.
Ich dachte, es könnte mit Text-Formaten zusammenhängen, aber ich habe aktive Filter "Gefiltertes HTML" und "Volles HTML" mit allen Berechtigungen.
Das, was mich verwirrte, waren die Ubercart-Rechnungen. Zuerst wurden sie mit HTML gesendet, und dann hörte es irgendwann auf. Sie erhielten Klartext. Nachdem ich ein bisschen @develkar Antwort gegraben habe, habe ich dies in einem der Ubercart-Updates gefunden:
/**
* 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',
)
)
);
}
Ich vermute, dass irgendwann eines der installierten Module (ich vermute das SMTP-Modul) diese Variable überschrieben hat, und deshalb kamen E-Mails als einfacher Text. Nachdem Sie dieses Update erneut manuell ausgeführt haben, sind Ubercat-Rechnungen wieder HTML-Rechnungen.
Für den Rest der E-Mails muss ich einige Module installieren, wie in anderen Antworten vorgeschlagen.
Danke.