WordPress Mail-Funktion wp_mail()
Für das Versenden von E-Mails aus einem Theme oder Plugin heraus stellt uns WordPress die Funktion wp_mail() zur Verfügung. Diese ist der PHP-Funktion für den Mail-Versand sehr ähnlich, vereinfacht jedoch z. B. das Hinzufügen von Anhängen und ist durch Filter leicht veränder- oder erweiterbar.
Anwendung
Wie gesagt, ist die Funktion wp_mail() seinem ursprünglichen PHP-Pendant mail() sehr ähnlich und wird Euch daher bekannt vorkommen.
<?php wp_mail( $to, $subject, $message, $headers, $attachments ); ?>
- $to: mehrere Adressen durch Kommas trennen oder in einem Array übergeben
- $subject: Betreff als Text-String
- $headers: zumindest
From: My Name <myname@mydomain.com>erforderlich - $attachments: Array von Pfaden anzuhängender Dateien
Beispiel
Ein funktionierendes Beispiel von wp_mail() wäre folgendes:
<?php
$mail_to = 'empfaenger@email.de';
$subject = 'Betreffendes';
$message = 'Ich will keine Message, ich will lieber ne Massage!';
$headers = 'From: Dein Name <absender@email.de>' . "\r\n\";
$attachments = array(WP_CONTENT_DIR . '/uploads/file_to_attach.zip');
wp_mail($mail_to, $subject, $message, $headers, $attachments);
?>
Wichtig ist hierbei zu wissen, dass zum korrekten Versenden der Nachricht zumindest der zusätzliche Header From: mit der Absenderadresse nötig ist.
HTML-Mails
Standardmäßig ist der Content-type der durch wp_mail() versendeten E-Mails reiner Text (text/plain). Es ist also erstmal kein HTML möglich.
Mit dem Filter wp_mail_content_type kann man den Content-type verändern und auf text/html setzen:
<?php
function wdm_contenttype($content_type) {
return 'text/html';
}
add_filter('wp_mail_content_type','wdm_contenttype');
?>
WordPress post_class() erweitern
WordPress Seiten-ID anhand des Titels herausfinden
Tutorial: Verschachtelte WordPress Widget-Areas
Neue Funktion body_class() in WordPress 2.8
Kommentare
Markus - am 14. Oktober 2010 -
ich hab bei meinem contact form immer @mail() hergenommen
wie schaut es den mit mit umlauten und encoding aus?
Simon [webdemar] - am 14. Oktober 2010 -
Ja
mail()geht natürlich auch. Das habe ich bisher auch so gemacht. Mitwp_mail()verwendest Du dann eben die in WordPress enthaltene PHPMailer-Klasse. Damit wird standardmäßig das im Backend unter Einstellungen > Lesen eingestellte Zeichensatz – meist ja UTF-8 – verwendet. Diesen kannste aber auch mit den zusätzlichen Headern setzen:$headers = "From: Dein Name \n" . "Content-Type: text/plain; charset=\"" . get_option('blog_charset') . "\"\n";Markus - am 14. Oktober 2010 -
hab es vorher getest
scheint alles zu laufen
martin - am 30. Oktober 2010 -
hallo!
ich habe UniSphere Vision 1.0 by Anonymous als Template!
Da ist die EMAIL/CONTACT Funktion irgendwie nicht aktiv bzw. in Ordnung.
D.h. wenn emails geschrieben darüber werden, dann werden diese nicht verschickt.
habs über mehrere email adressen versucht.
Das Plugin WPshopgermany von maennchen1.de basiert anscheinend auch darauf und ich bekomme momentan keine EMAIL über Bestellungseingänge. Auch der Kunde bekommt keine automatische Bestätigungdmail.
Hat jemand ne Idee, woran das liegen kann?
Vielen Dank!
Martin