【问题标题】:PHPMail not formating mail to htmlPHP Mail没有格式化mailto html
【发布时间】:2015-11-08 21:53:23
【问题描述】:

当我尝试从 php 脚本发送 html 邮件时,谁能告诉我为什么。我的 Outlook 接收它的方式与我在数据库中看到的方式相同?

目前我的工具发送一封电子邮件,其中$body var 为<p>Dear client,</p> <p> </p> <p>Please find your account statement attached.</p> <p> </p> <p>Kind Regards</p>

用代码:

$email = new PHPMailer();
        $email->From      = $from_email_address;
        $email->FromName  = $from_name;
        $email->Subject   = $subject;
        $email->IsHTML(true); 
        $email->Body      = $body;
        $email->AddAddress($client_email);

        $email->AddAttachment(ROOTDIR.'/reports/statement.pdf', "Statement.pdf");

        echo $email->Send();

但是当 Outlook 收到电子邮件时,它的格式不像 html 代码要求的那样。 Outlook 仅显示原始代码中的<p>标签。

附注:

我注意到如果我添加这一行:$body='<p>Dear client,</p><p>Please find this email well</p>'; 电子邮件是在 html 中生成并正确显示。但是当它从数据库<p>Dear client,</p> <p> </p> <p>Please find your account statement attached for your company.</p> <p> </p> <p>Kind Regards</p> 加载这个值时,它会将代码作为文本发送。不将其转换为 html。

这是什么原因造成的?

【问题讨论】:

  • 我希望在您的数据库层中应用额外的编码级别。在浏览器中查看 $body 的值可能隐藏了额外的编码——从命令行查看它。

标签: php html email outlook phpmailer


【解决方案1】:

为 HTML 内容添加电子邮件标题

$email = new PHPMailer();

$email->headers = 'MIME-Version: 1.0' . "\r\n";
$email->headers.= 'Content-type: text/html; charset=us-ascii' . "\r\n";

        $email->From      = $from_email_address;
        $email->FromName  = $from_name;
        $email->Subject   = $subject;
        $email->IsHTML(true); 
        $email->Body      = $body;
        $email->AddAddress($client_email);

        $email->AddAttachment(ROOTDIR.'/reports/statement.pdf', "Statement.pdf");

        echo $email->Send();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2019-01-03
    • 1970-01-01
    • 2010-10-07
    • 2012-03-03
    • 2020-10-27
    • 1970-01-01
    相关资源
    最近更新 更多