0

When I check with the FETCH command, I get like this:

2148 FETCH (UID 2159 INTERNALDATE "06-Nov-2013 06:36:15 +0000" RFC822.SIZE 3702 ENVELOPE ("Wed, 6 Nov 2013 12:06:39 +0530" {19} Reg: "test subject" (("karthick kumar" NIL "ngkarthick" "aroxo.com")) (("karthick kumar" NIL "ngkarthick" "aroxo.com")) (("karthick kumar" NIL "ngkarthick" "aroxo.com")) ((NIL NIL "phpkarthick" "gmail.com")) NIL NIL NIL ""))

There is some thing unwanted {19} in fetch command

4

2 回答 2

1

{19} 后跟 aCRLF称为文字。它说接下来的 19 个字符无需任何额外解释即可读取和获取。它们是 IMAP 协议的一部分,它们是可以传输具有难读字符的字符串的一种方式。它们通常用于传输正文,因为它们往往有自己的 CRLF。

在这种情况下,服务器决定像这样传输主题,所以它不必转义引号,否则这对协议很重要。

也许您的库不完全符合协议?

于 2013-11-12T15:04:50.137 回答
0

我通过进行一些模式替换解决了这个问题,并成功解决并获取了所有电子邮件,下面是我的代码,它可以帮助我实现这一目标

请将此代码添加到 fMailbox.php 行之后

$输出 = 数组();行号近 1117

    $response = $this -> write('FETCH ' . $messages . ' (UID INTERNALDATE RFC822.SIZE ENVELOPE)');
    $hintter = implode(' ', $response);
    $pattern = '(\{[0-9]+\})';

    if (preg_match($pattern, $hintter, $match)) {

        $responses = preg_replace($pattern, '', $response);
        $responsesnew = array();
        $i = 0;
        $j = 0;
        foreach ($responses as $reps) {

            if (substr(trim($reps), 0, 1) != '*') {
                $responsesnew[$i] = $responses[$j - 1] . $reps;
                $i++;
            }

            $j++;

        }
    } else {
        $responsesnew = $response;
    }

并将 foreach 参数更改为

foreach ($responsesnew as $line) 

 foreach ($responsesnew as $line) 
于 2014-11-10T10:33:57.713 回答