8

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

问题:(来源

请注意,邮件服务器对包含在电子邮件消息中的每一行有 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
}

Fault Exception: 651 Failed to parse response 基本上不喜欢格式或返回数据的方式。

4

3 回答 3

6

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

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

于 2011-01-19T17:30:27.210 回答
2

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

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

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

于 2011-01-19T17:04:04.507 回答
1

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

于 2015-02-10T18:44:03.213 回答