电子邮件服务器的990字符限制的解决方法

时间:2011-01-19 16:55:04

标签: php html-email mail-server character-limit

想知道是否有任何函数/类/等..来帮助解决电子邮件的990字符限制,因为我的HTML正在生效。

问题:(Source

  

请注意,邮件服务器有一个   每行990个字符的限制   包含在电子邮件中。如果   发送包含的电子邮件   超过990个字符的行,   这些线将被细分   附加行结束字符,   这可能会导致腐败   电子邮件,特别是HTML   内容。为了防止这种情况发生   发生,添加自己的行尾   适当位置的字符   在电子邮件中确保   没有行超过990   字符。

其他人似乎有这个问题吗?你是怎么解决这个问题的?

听起来我需要找一个好的地方来分割我的HTML并手动添加换行符,呃......

更新:

这是有很多行的指法数据。那么我需要在某处添加\ n或<br />吗?

更新#2:添加MIME类型代码

$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: quoted-printable\r\n"; // added this, but still no results
$headers .= "From: from@email.com\r\n";

以下是我如何调用函数:

我最初打电话:

return $html;

我尝试了什么:

return imap_8bit($html); // not working, nothing is captured in the error log

return imap_binary($html); // not working, nothing is captured in the error log

更新#3(添加邮件功能)

try {
    mail(
        'to@email.com',
        'Subject of Email',
        $html,
        $headers
        );
    } catch (Exception $e) {
        echo ("ERROR: Email NOT sent, Exception: ".$e->getMessage());
    }

示例HTML(这是HTML电子邮件的消息)(这也是属于XMLRPC服务的类)

private function getHTML() {
    $html  = '<html><head><title>Title</title></head><body>';
    $html .= '<table>';
    $html .= '<tr><td>many many rows like this</td></tr>';
    $html .= '<tr><td>many many rows like this</td></tr>';
    $html .= '<tr><td>many many rows like this</td></tr>';
    $html .= '<tr><td>many many rows like this</td></tr>';
    $html .= '<tr><td>many many rows like this</td></tr>';
    $html .= '</table>';
    $html .= '</body>';
    $html .= '</html>';

    return $html;
    //return imap_8bit($html); // not working, nothing is captured in the error log
    //return imap_binary($html); // not working, nothing is captured in the error log
    // Both of these return the XMLRPC Fault Exception: 651 Failed to parse response
}

错误异常:651无法解析响应,基本上不喜欢格式或数据的返回方式。

3 个答案:

答案 0 :(得分:4)

您可以通过wordwrap()功能放置内容,这样就不必手动插入换行符。

您是否考虑过使用众多邮件库中的一个? PHPMailerPEAR MailSwiftMailer等......?

答案 1 :(得分:1)

订单服务器具有更低的限制:每行76个字符+ \r\n

您必须使用imap_8bit()imap_binary()函数才能将数据转换为base64或quoted-printable encoding

您还可以使用现有的库,例如SwiftMailer

答案 2 :(得分:0)

实际上,这不是“邮件服务器”问题。 SMTP行限制规定了传输过程中每行允许的字符数。 SMTP RFC允许每行最多1000个字符,默认后缀安装上限为998个字符。如果您认为有必要超出RFC,则应联系您的托管服务提供商以增加SMTP线路限制。