当前位置: 首页 > 知识库问答 >
问题:

这个主题怎么了?错误451 CodeIgniter电子邮件类

沃威
2023-03-14

所以这很奇怪。

我收到一封正在生成的电子邮件,上面有一个451错误,除了导致它的原因是主题行的纯文本部分:s

这个主题行通过罚款:

$this->email->subject('New task in "'.$data['property_name'].'"');

这个会导致451错误:

$this->email->subject('A user has completed their task in "'.$data['property_name'].'"');

作为参考,错误451用于裸LF(http://cr.yp.to/docs/smtplf.html)。它通常是由未在设置中声明行结束规则或使用单引号引起的,即'/r/n/'而不是"/r/n"。我的设置是正确的,电子邮件工作正常。

调试器中值得注意的是,较长的行显示为:

Subject: =?utf-8?Q?A_user_has_completed_their_task_in_"TASKNAME
?=
 =?utf-8?Q?"?=

而工作的一个看起来像:

Subject: =?utf-8?Q?New_task_in_"TASKNAME"?=

这是线人窃听器吗?

共有2个答案

吉俊德
2023-03-14

你从哪里得到的451错误?我看到451被报告为处理中的本地错误。

如果主题字符串超过76个字符,则电子邮件类会将其分解:

109 // Line length must not exceed 76 characters, so we adjust for
110 // a space, 7 extra characters =??Q??=, and the charset that we will add to each line

你可以看到它在行动:

function test()
{
    echo "<pre>";
    print_r($this->_prep_q_encoding('A user had completed their task in "Going to change string to something"'));
}


function _prep_q_encoding($str, $from = FALSE)
{
    $this->crlf= "\n";  
    $this->charset = 'utf-8';
    $str = str_replace(array("\r", "\n"), array('', ''), $str);

    // Line length must not exceed 76 characters, so we adjust for
    // a space, 7 extra characters =??Q??=, and the charset that we will add to each line
    $limit = 75 - 7 - strlen($this->charset);

    // these special characters must be converted too
    $convert = array('_', '=', '?');

    if ($from === TRUE)
    {
        $convert[] = ',';
        $convert[] = ';';
    }

    $output = '';
    $temp = '';

    for ($i = 0, $length = strlen($str); $i < $length; $i++)
    {
        // Grab the next character
        $char = substr($str, $i, 1);
        $ascii = ord($char);

        // convert ALL non-printable ASCII characters and our specials
        if ($ascii < 32 OR $ascii > 126 OR in_array($char, $convert))
        {
            $char = '='.dechex($ascii);
        }

        // handle regular spaces a bit more compactly than =20
        if ($ascii == 32)
        {
            $char = '_';
        }

        // If we're at the character limit, add the line to the output,
        // reset our temp variable, and keep on chuggin'
        if ((strlen($temp) + strlen($char)) >= $limit)
        {
            $output .= $temp.$this->crlf;
            $temp = '';
        }

        // Add the character to our temporary line
        $temp .= $char;
    }

    $str = $output.$temp;

    // wrap each line with the shebang, charset, and transfer encoding
    // the preceding space on successive lines is required for header "folding"
    $str = trim(preg_replace('/^(.*)$/m', ' =?'.$this->charset.'?Q?$1?=', $str));

    return $str;
}

哪个输出

=?utf-8?Q?A_user_had_completed_their_task_in_"Going_to_change_string_to_?=
 =?utf-8?Q?something"?=

我见过其他人在设置电子邮件配置时遇到问题。你有

$config['crlf'] = "\r\n"; //double quotes ("), not single (') 
$config['newline'] = "\r\n";  //double quotes ("), not single (') 

套?

韩鸿
2023-03-14

我认为你混淆了单引号和双引号。尝试:

$this->email->subject('A user has completed their task in '.$data['property_name']);
 类似资料:
  • 问题内容: 我有一个这样的字符串: 我想以正确的UTF-8编码获取文件名。在Maven Central的某处是否有一个库方法可以为我执行此解码,还是我需要测试模式并手动解码base64? 问题答案: 在MIME术语中,那些编码的块称为编码字。看看在JavaMail的。该方法将解码字符串中的所有编码词。 你可以用

  • 我已经从CodeIgniter发送了一封电子邮件,但我不知道为什么我的电子邮件会被截断,或者它会被包含在带有问号的黑钻石中。这是真的,我使用波斯字符,但标题是utf-8无论如何。下面是发送电子邮件的CodeIgniter代码: 只要注意主题中的非拉丁字符:

  • 问题内容: printf下划线为红色并给出错误信息?怎么了?我用过Eclipse 问题答案: 从Java 5开始可用。因此,看起来您的项目已配置为使用Java 1.4。右键单击更改项目的配置,然后转到“属性”: 选择Java Build Path选项,并确保您为项目使用正确的Java JDK版本。 选择Java编译器选项,并确保您使用的是Java 1.5或更高版本。 如果碰巧要用Java 8创建项

  • 给出以下代码片段: 当我在Eclipse中执行这段代码时,我收到一封电子邮件,如: 这就是我想要的! 但后来,我尝试在部署在Jboss-4.0.5中的应用程序中使用这个主应用程序,我收到了这样一封电子邮件: 因此,不仅消息不是html消息,而且电子邮件的主题也丢失了,而且似乎没有使用收件人发送电子邮件,而是使用密件抄送<我不知道这种行为的原因是什么,有没有人可以帮助我,或者只是给我一些提示。 更新

  • 我有php邮件,我在我的网页上有联系表格。如果有人填写详细信息,如姓名,联系人,电子邮件,消息等,然后点击发送按钮,下面的错误会出现在屏幕上,但我可以接收邮件,但每次发送邮件都会出现此错误消息。 SMTP-

  • 我使用OpenText Content Server中的AnswerModules内容脚本调用DocuSign API并发送远程签名电子邮件。使用docusign.createEnvelopeAndSend(null,envDef),我可以发送信封定义,其中包含要签名的文档、收件人详细信息、电子邮件主题和电子邮件正文。我们有多种场景,其中根据文档类别使用不同的电子邮件正文和主题。现在我们有了一个新