使用WordPress发送带有smtp插件的html邮件


Using WordPress to send html mails with the smtp plugin

当我的用户要注册我的网站时,我想向他们发送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或任何插件