Wordpress HTML Mail mit wp_mail() verschicken

Wordpress hat eine Funktion auf basis des PHPmailer() Objektes, bzw. der Klasse. Damit machen es Plugins auch auf den SMPT zu verbinden.

Ein einfaches Beispiel für eine Mail Funktion sieht so aus:

/*
	Notwenidg, dass eine HTML Mail versendet werden kann
 */
function mail_as_html(){
    return "text/html";
}
 
 
/**
 * Sendet eine Mail Notification an einen Subscriber
 *
 * @param  object $post_object   Post-Object
 * @param  object $subscriber    User-Object
 *
 * @return bool                  Ob die Mail gesendet wurde oder nicht
 */
function send_mail( $new_user, $send_to = [] ){
 
	$mail_adress  = $subscriber->data->user_email;
	$mail_subject = 'Ein neuer interessanter CORE-Beitrag wurde veröffentlicht';
	$mail_header  = wp_get_attachment_url( 10554 );               // Mail Headerbildes
	$mail_msg     = mail_message( $post_object->ID );         // Mail-Message
	$html_mail    = mail_template( $mail_msg, $mail_header ); // Mail-HTML-String
 
	add_filter( 'wp_mail_content_type','user_registration_mail_as_html' );
	$is_send      = wp_mail( $mail_adress, $mail_subject, $html_mail );
	remove_filter( 'wp_mail_content_type','mail_as_html' );
 
	return $is_send;
}

Hinweis: die Funktionen mail_message( … ) und mail_template( … ) geben HTML zurück. Diese nutze ich, dass die Funktionen nicht zu groß und unübersichtlich werden. Gerade ein Newsletter-Template kann sehr viele Zeilen Code enthalten.

Dies könnte so aussehen für die mail_message( … ) :

/**
 * HTML Template der Message (nur innerer Block)
 *
 * @param  int $post_id   Post-ID
 *
 * @return string         HTML-Block der Nachricht
 */
function mail_message( $post_id ){
	return "
 
		Folgender Beitrag wurde gerade veröffentlicht:<br /><br />
		" . get_the_post_thumbnail( $post_id ) . "<br />
		<a href=\"" . get_permalink( $post_id ) . "\">
			<strong>" . get_the_title( $post_id ) . "</strong>
		</a><br /><br />
	";
}

Page Tools