| | |
| | | // set message charset from message headers |
| | | if ($headers->charset) |
| | | $this->struct_charset = $headers->charset; |
| | | // ... or from first part headers |
| | | else if (is_array($structure[2]) && $structure[2][0] == 'charset') |
| | | $this->struct_charset = $structure[2][1]; |
| | | else if (is_array($structure[0][2]) && $structure[0][2][0] == 'charset') |
| | | $this->struct_charset = $structure[0][2][1]; |
| | | else if (is_array($structure[0][0][2]) && $structure[0][0][2][0] == 'charset') |
| | | $this->struct_charset = $structure[0][0][2][1]; |
| | | else |
| | | $this->struct_charset = null; |
| | | $this->struct_charset = $this->_structure_charset($structure); |
| | | |
| | | $struct = &$this->_structure_part($structure); |
| | | $struct->headers = get_object_vars($headers); |
| | |
| | | $part->filename = rcube_charset_convert(urldecode($filename_encoded), $filename_charset); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * Get charset name from message structure (first part) |
| | | * |
| | | * @access private |
| | | * @param array Message structure |
| | | * @return string Charset name |
| | | */ |
| | | function _structure_charset($structure) |
| | | { |
| | | while (is_array($structure)) { |
| | | if (is_array($structure[2]) && $structure[2][0] == 'charset') |
| | | return $structure[2][1]; |
| | | $structure = $structure[0]; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Fetch message body of a specific message from the server |
| | | * |