BLOG

HTML-Mail mit Umlauten und Anhang (D7)

... und dann eine Bestätigungsmail mit einem PDF.

Kein Problem, Kunde.

Denkste !  Nach verzweifelnden Stunden mit den Modulen PHPMailer, SMTP, mimemail, mailsystem und htmlmail rief ich Karsten an, der sich deutlich hinter dem Ohr kratzte und mir dann mit den Worten "da hab ich damals einen ganzen Tag für gebraucht" den entscheidenden Link auf drupal.org gab, wo ein Patch von ihm zu finden ist.

Und so geht's:

Benötigt werden die Module und der Patch

Module aktivieren und Patch einspielen:

  • Patch in den Modulordner legen
  • im Terminal zu diesem Ordner wechseln und patchen:

   >cd sites/alle/modules/phpmailer
   >patch < phpmailer_811774_07_1.patch

Einstellungen:

admin/config/system/phpmailer

  • nicht vergessen, die Checkbox oben anzuschalten. Eine Testmail (unter Test configuration) zeigt, obs funktioniert.

admin/config/system/mailsystem

  • bei den oberen Dropdowns MimeMailSystem wählen.

admin/config/system/mimemail

  • Checkboxen aus
  • E-mail format auf Full HTML
  • E-mail engine: PHPMailer

Aufruf in PHP:

<?php
  $params
= array(
   
'from' => 'mir [at] abc [dot] de',
   
'subject' => 'Titel',
   
'message' => 'Ein schönes Bild im Anhang.',
   
'attachments' => array(
     
'0' => array (
       
'uri' => NULL,
       
'filepath' => 'sites/all/themes/mytheme/bild.png',
       
'filename' => 'superbild.jpeg',
       
'filemime' => 'image/jpeg',
      ),
      ),
  );
 
// siehe function ubg_mw_mail()
 
drupal_mail('ubg_mw', 'standard', 'dich [at] xxx [dot] de', $language, $params, 'mir [at] abc [dot] de', true); 
?>

Wichtig hier: 'attachments' ist ein Array von Arrays, weil es ja auch mehrere Anhänge geben kann.

in der function my_module_mail() wird dann die $message zusammengebaut. Der $key standard kann natürlich auch anders heissen. Hier ein Beispiel:

<?php
/**
* hook_mail - hier wird die Mail $message zusammengebaut
*/
function my_module_mail($key, &$message, $params) {
  switch (
$key) {
    case
'standard':
     
$message['subject'] = $params['subject'];
     
$message['body'][] = $params['message'];
      if (isset(
$params['Cc']))  $message['headers']['Cc']  = $params['Cc'];
      if (isset(
$params['Bcc'])) $message['headers']['Bcc'] = $params['Bcc'];

      break;
  }
// switch $key

}
?>

Viel Erfolg !

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.
Mit dem Absenden dieses Formulars, akzeptieren Sie die Datenschutzrichtlinie von Mollom.