当我的用户要注册我的网站时,我想向他们发送html邮件,我已经在函数"wp_new_user_notification"中编写了这些代码。
$message = '<html><body>';
$message .= '<img src="//liux.so/mail/pic.jpg" alt="'r'n" />';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= "<tr style='background: #eee;'><td><strong>username:</strong> </td><td>" . strip_tags($user->user_login) . "</td></tr>";
$message .= "<tr><td><strong>password:</strong> </td><td>" . strip_tags($plaintext_pass) . "</td></tr>";
$message .= "</table>";
$message .= "</body></html>";
在把一封测试邮件发送到我自己的邮箱后,我惊讶地发现整封邮件都是html代码!然后我在谷歌上搜索这个问题。它说我应该在"信息"前面加上"标题"。就像。。。
mail($to, $subject, $message, $headers);
所以问题就在这里!我安装了一个插件,可以通过smtp服务发送邮件。这个插件应该写这样的代码。。。
wp_mail($user->user_email, sprintf(__('[%s] Welcome!”'), $blogname), $message);
我不知道如何将"header"放入"wp_mail"函数中,或者只是让html代码工作。。。
@shahrukh的答案是绝对正确的。您应该将内容类型设置为html,这将解决您的问题。但它可能与其他插件或默认的wordpress功能有一些冲突。因此,您应该在发送邮件之前添加过滤器,并在发送邮件后删除过滤器。
add_filter( 'wp_mail_content_type', 'set_html_content_type' );
wp_mail( 'To Email', 'Subject', '<h1>Html Email</h1>' );
remove_filter( 'wp_mail_content_type', 'set_html_content_type' );
function set_html_content_type() {
return 'text/html';
}
添加过滤器以发送html电子邮件
add_filter( 'wp_mail_content_type', 'set_html_content_type' );
function set_html_content_type() {
return 'text/html';
}
在此之后,您将能够发送html格式的电子邮件。此代码必须在functions.php或任何插件