PHP Sendmail发送的电子邮件内容包含CSS内联样式时不显示

用户名

我有一个非常奇怪的问题,似乎无法找出原因。我知道为什么它显然是由...引起的,这是因为电子邮件的HTML内容包含内联CSS样式。当我删除内联样式时,电子邮件会正常发送。当我添加它时,它不是。

我正在像这样运行脚本:

$text_message = 'HELLO! Some more email content goes here';

$html_message = '<table>
<tbody><tr>
<td class="mcnTextContent" style="padding-top: 9px;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #606060;font-family: Helvetica;font-size: 15px;line-height: 150%;text-align: left;" valign="top">

<h3 style="margin: 0;padding: 0;display: block;font-family: Helvetica;font-size: 18px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: -.5px;text-align: left;color: #606060 !important;">HELLO!</h3>Some more email content goes here

</td>
</tr>
</tbody></table>';



$link = 'link';

$text_message = sprintf($text_message, $msg_details['name'], $link, $this->setts['sitename']);
$html_message = sprintf($html_message, $msg_details['name'], $link, $this->setts['sitename']);

send_mail($msg_details['email'], 'Message Received - ' . $setts['sitename'], $text_message, 
    $this->setts['admin_email'], $html_message, null, $send);

然后,“ send_mail”函数的后端是:

function send_mail($to, $subject, $text_message, $from_email, $html_message = null, $from_name = null, $send = true, $reply_to = null) 
{
    global $setts, $current_version;

    if ($send)
    {
        ## set date
        $tz = date('Z');
        $tzs = ($tz < 0) ? '-' : '+';
       $tz = abs($tz);
        $tz = ($tz / 3600) * 100 + ($tz % 3600) / 60;
        $mail_date = sprintf('%s %s%04d', date('D, j M Y H:i:s'), $tzs, $tz);

        $uniq_id = md5(uniqid(time()));

        ## create the message body
        $html_message = ($html_message) ? $html_message : $text_message;

        $html_msg = "<!--\n" . $text_message . "\n-->\n". "<html><body>". $html_message . "</body></html>";

        $from_name = (!empty($from_name)) ? $from_name : GMSG_MAIL_FROM_ADMIN;
        switch ($setts['mailer'])
        {
            case 'sendmail': ## send through the UNIX Sendmail function
                ## create header
                $header = "Date: " . $mail_date . "\n".
                    "Return-Path: " . $from_email . "\n".
                    "To: " . $to . "\n".
                    "From: " . $from_name . " <" . $from_email . ">\n".
                    (($setts['enable_bcc']) ? "Bcc: " . $setts['admin_email'] . "\n" : "").
                    "Reply-to: " . ((!empty($reply_to)) ? $reply_to : $from_email) . "\n".
                    "Subject: " . $subject . "\n".
                    sprintf("Message-ID: <%s@%s>%s", $uniq_id, $_SERVER['SERVER_NAME'], "\n").
                    "X-Priority: 3\n".
                    "X-Mailer: Sendmail [version " . $current_version . "]\n".
                    "MIME-Version: 1.0\n".
                    "Content-Transfer-Encoding: 7bit\n".
                    sprintf("Content-Type: %s; charset=\"%s\"","text/html",LANG_CODEPAGE).
                    "\n\n";

                if ($from_email)
                {
                    $output = sprintf("%s -oi -f %s -t", $setts['sendmail_path'], $from_email);
                }
                else
                {
                    $output = sprintf("%s -oi -t", $setts['sendmail_path']);
                }

                if(!@$mail = popen($output, "w")) 
                {
                    echo GMSG_COULDNT_EXECUTE . ': ' . $setts['sendmail_path'];
                }

                fputs($mail, $header);
                fputs($mail, $html_msg);

                $result = pclose($mail) >> 8 & 0xFF;

                if($result != 0) 
                {
                    echo GMSG_COULDNT_EXECUTE . ': ' . $setts['sendmail_path'];
                }
                break;
        }
    }
}

我知道,代码很杂乱……但这不是我自己的,而是我正在编辑的脚本。问题是...只要删除$ html_message变量中的“样式...”,HTML电子邮件就会正确显示,包括h3样式等。当我添加样式时,它仅显示$ text_message内容。

哪一部分可能会被剥离或禁用HTML代码?

可能是您的邮件客户端或邮件过滤器。

您似乎对sendmail的理解足够好,请使用

sendmail -oi -t < /tmp/email.txt

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

电子邮件未使用php发送

来自分类Dev

使用Mandrill(php)发送电子邮件时出错

来自分类Dev

使用SendMail发送电子邮件EC2-PHP失败

来自分类Dev

使用PHP sendmail发送电子邮件不适用于主域

来自分类Dev

从php邮件发送重复的电子邮件

来自分类Dev

使用php发送电子邮件

来自分类Dev

使用sendgrid API在电子邮件内容无效或php中不发送邮件时获得通知

来自分类Dev

PHP-发送每日电子邮件

来自分类Dev

PHP不显示电子邮件中的电子邮件地址

来自分类Dev

PHP发送邮件显示名称而不是电子邮件

来自分类Dev

用PHP发送电子邮件

来自分类Dev

使用mail()php将邮件发送到gmail时,为什么不在电子邮件中显示类CSS?

来自分类Dev

使用Mandrill(php)发送电子邮件时出错

来自分类Dev

使用SendMail发送电子邮件EC2-PHP失败

来自分类Dev

电子邮件发送表格php / html

来自分类Dev

通过PHP发送电子邮件

来自分类Dev

未发送PHP电子邮件模板

来自分类Dev

无法从PHP发送电子邮件

来自分类Dev

用PHP发送HTML电子邮件

来自分类Dev

用php发送html电子邮件包含特殊字符

来自分类Dev

PHP电子邮件发送失败

来自分类Dev

使用HTML / CSS发送PHP电子邮件

来自分类Dev

发送包含php和html内容的电子邮件

来自分类Dev

PHP-发送带有附件的电子邮件不显示消息内容

来自分类Dev

通过 php 邮件发送电子邮件时,内联 css 不打印在电子邮件中

来自分类Dev

php 中电子邮件内容的样式变量

来自分类Dev

PHP 电子邮件包括但不显示内嵌图像

来自分类Dev

在结帐完成时使用 PHP 发送电子邮件

来自分类Dev

如何使用 PHP 发送包含 YouTube 视频的电子邮件

Related 相关文章

热门标签

归档