1 | | I intended to make the code more readable and will structured, added some methods like '''send()''' and '''get_reply()''', they contain both a DEBUG condition to log the string that is being handled to avoid checking each time throughout the code (example): |
2 | | |
3 | | {{{ |
4 | | if($this->DEBUG) |
5 | | error_log("POP3 SEND [connect: $server] GOT [$reply]",0); |
6 | | }}} |
7 | | |
8 | | Notice that the get_reply() strips CRLF from the response string automatically [http://core.trac.wordpress.org/browser/trunk/wp-includes/class-pop3.php#L463/ instead of doing it each time outside the function ], moreover , i found a bug in pop_list() [http://core.trac.wordpress.org/browser/trunk/wp-includes/class-pop3.php#L303/ class-pop3#L303] where some email providers return an extra word (messages) in the response, the workaround ([http://core.trac.wordpress.org/attachment/ticket/21559/class-pop3.php#L314/ #L314]) i suggested is to preg_match for number sequences and get last number matched in the list. |
9 | | |
10 | | I found a simple [http://core.trac.wordpress.org/attachment/ticket/21559/class-pop3.php#L535/ workaround] for parse_banner(), it is possible to use preg_match to get strings that are located between <> , seems better to me than: |
11 | | |
12 | | |
13 | | {{{ |
14 | | function parse_banner ( $server_text ) { |
15 | | $outside = true; |
16 | | $banner = ""; |
17 | | $length = strlen($server_text); |
18 | | for($count =0; $count < $length; $count++) |
19 | | { |
20 | | $digit = substr($server_text,$count,1); |
21 | | if(!empty($digit)) { |
22 | | if( (!$outside) && ($digit != '<') && ($digit != '>') ) |
23 | | { |
24 | | $banner .= $digit; |
25 | | } |
26 | | if ($digit == '<') |
27 | | { |
28 | | $outside = false; |
29 | | } |
30 | | if($digit == '>') |
31 | | { |
32 | | $outside = true; |
33 | | } |
34 | | } |
35 | | } |
36 | | $banner = $this->strip_clf($banner); // Just in case |
37 | | return "<$banner>"; |
38 | | } |
39 | | }}} |
40 | | |
41 | | i added two optional arguments to the constructor $timeout ( setting timeout ) and $connect ( if true, then connect to the pop3 server ). |
42 | | |
43 | | i apologize if there is any mistakes in the text. |