Frage

Ist es möglich, E-Mails mit der Funktion WP_MAIL () mit dem Inhaltstyp zu senden: Multipart/Alternative?

Ich muss E -Mails senden, die als HTML oder einfacher Text angezeigt werden können, je nachdem, welches Medium die E -Mail interpretiert.

Alle Vorschläge sind willkommen!

War es hilfreich?

Lösung

Es ist genau dort in der wp_mail() Dokumentation (unter Verwendungszweck):

Der Standardinhaltstyp ist 'Text/Plain', der nicht zulässt, wie man HTML verwendet. Sie können den Inhaltstyp der E-Mail entweder mit dem Filter "WP_MAIL_CONTENT_TYPE" (siehe Beispiel unten) oder einen Header wie "Inhaltstyp: Text/HTML" einstellen. Achten Sie darauf, 'wp_mail_content_type' zurück zu 'text/plain' zurückzusetzen, nachdem Sie Ihre Nachricht gesendet haben, Weil dies jedoch zu unerwarteten Problemen mit E-Mails von WP oder Plugins/Themen führen kann.

(Hervorhebung meiner)

Das 2. Beispiel auf der Seite zeigt Ihnen, wie es geht (das Beispiel verwendet text/html Aber Sie sollten in der Lage sein, Ihre zu verwenden multipart/alternative stattdessen.

Andere Tipps

Es ist absolut möglich, wenn Sie Zugriff auf die Phpmailer -Instanz haben.

if ($is_html) 
    add_action('phpmailer_init', 'fix_mimeheader');

// more code.

wp_mail( $to, $subject, $html_message, $headers, $attachments );

// ...

function fix_mimeheader( $phpmailer ) {
     // Generate $text_message here.
     // ...

     $phpmailer->AltBody = $text_message;
}

Die an wp_mail gesendete Nachricht sollte Ihr HTML -Code sein. Sie sollten auch keine Header für Inhaltstypen einfügen. Ich verwende derzeit von, CC und Antwort im Plugin, das ich gemacht habe.

Wenn die E -Mail als HTML gesendet wird, führe ich die Aktion aus, die die Altbody -Eigenschaft auf dem Phpmailer -Objekt direkt festlegt. Dies führt dann dazu, dass die richtigen Flags die E -Mail in eine mehrteilige/alternative E -Mail konvertieren.

Du kannst den ... benutzen wp_mail_content_type filter, was jetzt im Codex dokumentiert wurde.

Die WP_MAIL -Dokumentation über das Zurücksetzen des Inhaltstyps auf "Text/Plain" ist eine Art irreführend, IMO. Da dies ein Filter ist, setzen Sie ihn nicht wirklich zurück. Was Sie in Ihrem Filter berücksichtigen müssen, ist eine bedingte Logik, um festzustellen, wann Sie mehrteilige und einfache Text oder HTML verwenden müssen:

add_filter( 'wp_mail_content_type', 'my_mail_content_type' );
function my_mail_content_type( $content_type ) {

    if( $some_condition ) {
        return 'multipart/mixed';
    } else {
        return 'text/plain';
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top