无需使用PHPMailer类代替wp_mail()
. wp_mail()
本质上是类的包装器。它只是简化了打包和发送信息的方式。
您可以在初始化PHPMailer元素时访问它,以便wp_mail()
通过SMTP而不是web服务器发送。
你说你不是在添加一个动作来控制它的使用位置,但这正是动作挂钩的目的——它允许你在你想要的时候,在你想要的地方,准确地挂钩。
在这种情况下,需要在初始化PHPMailer时设置所有这些PHPMailer元素。这有一个动作钩-phpmailer_init
使用该挂钩初始化PHPMailer时,可以定义设置:
add_action( \'phpmailer_init\', \'send_smtp_email\' );
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = \'smtp.google.com\';
$phpmailer->Port = \'587\';
$phpmailer->SMTPSecure = \'tls\';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = \'[email protected]\';
$phpmailer->Password = \'11111111\';
$phpmailer->From = \'[email protected]\';
$phpmailer->FromName = \'From Name\';
$phpmailer->addReplyTo(\'[email protected]\', \'Information\');
}
您需要HTML格式的邮件。你可以把它放进去
wp_mail()
\'s标头参数,但您可以/应该使用
wp_mail_content_type
过滤器;
add_filter( \'wp_mail_content_type\',\'set_my_mail_content_type\' );
function set_my_mail_content_type() {
return "text/html";
}
正确完成设置后,现在您可以使用
wp_mail()
要发送您的消息,您可以在任何地方执行此操作-我建议将此功能挂接到有意义的东西上-例如“template\\u redirect”,以便在消息头发送到下游之前执行此操作:
function my_function() {
$to = \'[email protected]\';
$subject = \'Here is the subject\';
$message = \'This is the HTML message body <b>in bold!</b>\';
wp_mail( $to, $subject, $message );
}
Update: Alternate (Contained) Method:
因此,扩展上面概述的内容,假设以下设置是
not 你每次开火都想要什么
wp_mail()
并且您只需要特定电子邮件的这些设置。
您仍然需要打破设置并适当地钩住它们(否则它们将无法在正确的时间处理)。注意到phpmailer_init
和wp_mail_content_type
钩子被击中时wp_mail()
正在运行时,您可以在主要功能中设置这些挂钩,运行电子邮件,然后删除它们,这样您就回到了默认状态。
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = \'smtp.google.com\';
$phpmailer->Port = \'587\';
$phpmailer->SMTPSecure = \'tls\';
$phpmailer->SMTPAuth = true;
$phpmailer->Username = \'[email protected]\';
$phpmailer->Password = \'11111111\';
$phpmailer->From = \'[email protected]\';
$phpmailer->FromName = \'From Name\';
$phpmailer->addReplyTo(\'[email protected]\', \'Information\');
}
function set_my_mail_content_type() {
return "text/html";
}
function my_function() {
$to = \'[email protected]\';
$subject = \'Here is the subject\';
$message = \'This is the HTML message body <b>in bold!</b>\';
add_filter( \'wp_mail_content_type\',\'set_my_mail_content_type\' );
add_action( \'phpmailer_init\', \'send_smtp_email\' );
wp_mail( $to, $subject, $message );
remove_filter( \'wp_mail_content_type\',\'set_my_mail_content_type\' )
remove_action( \'phpmailer_init\', \'send_smtp_email\' );
}