Je crée un module simple qui enverra des e-mails HTML aux utilisateurs pour des offres sur notre site Web.
J'ai beaucoup cherché, mais je ne trouve pas de solution appropriée pour Drupal. Maintenant, je peux envoyer des mails mais en texte brut.
Qu'est-ce qu'une procédure étape par étape pour envoyer des e-mails HTML dans Drupal 7?
function example_form_submit( $form,&$form_state) {
$friend_email=$form_state['values']['friend_email'];
$mailto =$friend_email; //gift to a friend
$mailfrom ='[email protected]';
$subject = "another message for HTML email from example.com";
$body="<h2 style='font-size:28px;color:red;'>Hello EMAIL, i here i want to be <b>bolded</b></h2>";
if (drupal_mail('example', 'send_gift', $mailto, language_default(),$params,$mailfrom,TRUE)) {
drupal_set_message(t('Your gift was sent successfully!!!'));
}
else {
drupal_set_message(t('<font color="red">Error occured while sending your mail!!!</font>'));
}
/****hook_mail*/
function example_mail($key,&$message,$params) {
$language = $message['language'];
switch ($key) {
case 'send_gift':
$message['subject']=t($params['subject'], $var, $language->language);
$message['body'][]=$params['body'];
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
break;
}
}
Réponses:
Comme Geoff l'a mentionné, une option serait d'utiliser le module Mime Mail, mais vous pouvez également activer votre module personnalisé pour envoyer des e-mails HTML avec du code supplémentaire. En bref, vous devez modifier la
mail_system
variable et écrire votre propre implémentation deMailSystemInterface
. Un exemple de cela est le code suivant.Dans 'mymodule.install':
À l'intérieur de 'mymodule.module':
Vous devez remplacer les instances de mymodule par le nom de votre module, puis désactiver et réactiver votre module pour que la variable soit modifiée, après quoi les choses devraient fonctionner. Pour un exemple complet, vous pouvez consulter ma réponse ici . De plus, cette page sur drupal.org est d'où j'ai obtenu à l'origine toutes les informations.
la source
Le module Mime Mail est presque certainement ce que vous recherchez.
la source
Vous pouvez également consulter le module Swift Mailer. Il vous permet d'envoyer des e-mails HTML avec des pièces jointes en ligne et régulières (telles que des images ou des fichiers). En outre, il est également capable de générer automatiquement des versions en texte brut basées sur l'e-mail HTML.
Vous pouvez le consulter http://www.drupal.org/project/swiftmailer
Pour mémoire: je suis l'auteur et le mainteneur du module.
la source
Vous n'envoyez pas de code HTML approprié, vous incluez uniquement les balises H1 et B, vous devez probablement également inclure des balises HTML complètes à partir de
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
la source
Aucune des réponses ci-dessus n'a fonctionné pour moi, alors voici mon point de vue sur la question d'origine.
Tout d'abord, installez et activez le module Mime Mail . Vous pouvez lire le fichier README.txt pour des instructions complètes sur la façon de l'utiliser. Je vais vous donner la version courte.
Vous devez activer Mime Mail pour votre module. Vous pouvez le faire en utilisant
hook_enable
ouhook_update_N
enexample.install
:Lorsque vous allez sur,
admin/config/system/mailsystem
vous verrez qu'une nouvelle entrée a été ajoutée pour votre module:Maintenant, vous n'avez plus besoin de spécifier d'en-
text/html
tête, Mime Mail s'en charge. Vous n'avez donc pas besoin de cela:Si vous le souhaitez, vous pouvez ajouter
$message['plaintext']
à votre courrier une alternative non HTML, mais cela n'est pas obligatoire.C'est ça!
la source