【发布时间】:2018-07-26 11:38:38
【问题描述】:
我在 WordPress 中使用 wp_mail() 和 PHPMailer 发送多部分电子邮件时遇到问题。
此邮件标题:
$wp_mail_headers = array(
"From: Test <test@test.com>",
'Content-Type: multipart/alternative;
boundary="b_00cdedc7a5309e22d6d51e1ad7ad886e"',
);
用PHPMailer发送时会这样,边界消失了:
X-Mailer: PHPMailer 5.2.22 (https://github.com/PHPMailer/PHPMailer)
MIME-Version: 1.0
Content-Type: multipart/alternative; charset=
Content-Transfer-Encoding: quoted-printable
应该是这样的:
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="b_00cdedc7a5309e22d6d51e1ad7ad886e"
如何使用 PHPMailer 设置多部分邮件标题?
谢谢!
更新:
添加过滤器怎么样?那会奏效吗?例如:
add_filter( 'wp_mail', 'rw_change_email_headers' );
function rw_change_email_headers( $params )
{
$params['headers'] = 'Content-type: text/html';
return $params;
}
如果过滤器与 PHPMailer 一起使用,如何将其添加到下面的代码中? 之后是否应该使用 remove_filter( ) 删除过滤器?
$wp_mail_headers = array(
"From: Test <$wp_admin_email>",
"Bcc: test@test.com",
"Reply-To: $wp_admin_email",
'Content-Type: multipart/alternative; boundary="b_00cdedc7a5309e22d6d51e1ad7ad886e"',
);
$wp_mail_message = '--b_00cdedc7a5309e22d6d51e1ad7ad886e
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable';
$wp_mail_message .= get_field('order_email_plain_text', 'option');
$wp_mail_message .= '--b_00cdedc7a5309e22d6d51e1ad7ad886e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<!doctype html><html lang="en"><head><meta name="viewport" content="width=device-width" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Order Email</title></head><body>';
$wp_mail_message .= get_field('order_email', 'option');
$wp_mail_message .= '</body></html>
--b_00cdedc7a5309e22d6d51e1ad7ad886e--';
【问题讨论】: