Changeset 4014
- Timestamp:
- 04/13/11 15:58:11 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2/expressoMail1_2/inc/class.imap_functions.inc.php
r3955 r4014 117 117 118 118 //Condição comentada devido a um problema na função imap_status que não retorna valores exatos para pastas 119 //acentuadas e tambem pela não necessidade de se tratar mensagens lidas ou n ão lidas das demais, em relação119 //acentuadas e tambem pela não necessidade de se tratar mensagens lidas ou não lidas das demais, em relação 120 120 //a contagem de mensagens não lidas e do total de mensagens 121 121 /* 122 122 if(!$search_box_type || $search_box_type=="UNSEEN" || $search_box_type=="SEEN") { 123 123 $msgs_info = imap_status($this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder,SA_ALL); 124 125 126 124 $return['tot_unseen'] = $search_box_type == "SEEN" ? 0 : $msgs_info->unseen; 127 128 125 $sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$msg_range_end); 129 130 126 $num_msgs = ($search_box_type=="UNSEEN") ? $msgs_info->unseen : (($search_box_type=="SEEN") ? ($msgs_info->messages - $msgs_info->unseen) : $msgs_info->messages); 131 127 … … 146 142 else { 147 143 * */ 148 $num_msgs = imap_num_msg($this->mbox); 149 $sort_array_msg = $this-> get_msgs($folder, $sort_box_type, $search_box_type, $sort_box_reverse,$msg_range_begin,$num_msgs); 150 151 152 $return['tot_unseen'] = 0; 153 $i = 0; 154 155 if(is_array($sort_array_msg)){ 156 foreach($sort_array_msg as $msg_number => $value) 157 { 158 $temp = $this->get_info_head_msg($msg_number); 159 if(!$temp) 160 return false; 161 162 if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N'){ 163 $return['tot_unseen']++; 164 } 165 166 if($i <= ($msg_range_end-$msg_range_begin)) 167 $return[$i] = $temp; 168 $i++; 169 } 170 } 171 $return['num_msgs'] = count($sort_array_msg)+($msg_range_begin-1); 172 173 //} 174 return $return; 144 $msgs_info = imap_status( $this->mbox,"{".$this->imap_server.":".$this->imap_port.$this->imap_options."}".$folder,SA_ALL ); 145 $num_msgs = imap_num_msg($this->mbox); 146 $sort_array_msg = $this->get_msgs( $folder, $sort_box_type, $search_box_type, $sort_box_reverse, $msg_range_begin, $msg_range_end ); 147 $return['tot_unseen'] = ( $search_box_type == "SEEN" ) ? 0 : $msgs_info->unseen; 148 149 $i = 0; 150 151 if( is_array($sort_array_msg) ) 152 { 153 foreach($sort_array_msg as $msg_number => $value) 154 { 155 $temp = $this->get_info_head_msg($msg_number); 156 157 if(!$temp) 158 return false; 159 160 if($temp['Unseen'] == 'U' || $temp['Recent'] == 'N') 161 { 162 $return['tot_unseen']++; 163 } 164 165 if($i <= ($msg_range_end-$msg_range_begin)) 166 $return[$i] = $temp; 167 168 $i++; 169 } 170 } 171 172 $return['num_msgs'] = $num_msgs; 173 174 return $return; 175 175 } 176 176 … … 182 182 //if ($this->prefs['use_important_flag'] ) 183 183 //{ 184 /*Como eu preciso do atributo Importance para saber se o email é185 * importante ou n ão, uso abaixo a função imap_fetchheader e busco186 * o atributo importance nela. Isso faz com que eu acesse o cabe çalho184 /*Como eu preciso do atributo Importance para saber se o email é 185 * importante ou não, uso abaixo a função imap_fetchheader e busco 186 * o atributo importance nela. Isso faz com que eu acesse o cabeçalho 187 187 * duas vezes e de duas formas diferentes, mas em contrapartida, eu 188 * n ão preciso reimplementar o método utilizando o fetchheader.189 * Como as mensagens s ão renderizadas em um número pequeno por vez,190 * n ão parece ter perda considerável de performance.188 * não preciso reimplementar o método utilizando o fetchheader. 189 * Como as mensagens são renderizadas em um número pequeno por vez, 190 * não parece ter perda considerável de performance. 191 191 */ 192 192 … … 194 194 $flag = preg_match('/importance *: *(.*)\r/i', $tempHeader, $importance); 195 195 //} 196 // Reimplementado c ódigo para identificação dos e-mails assinados e cifrados197 // no m étodo getMessageType(). Mário César Kolling <mario.kolling@serpro.gov.br>196 // Reimplementado código para identificação dos e-mails assinados e cifrados 197 // no método getMessageType(). Mário César Kolling <mario.kolling@serpro.gov.br> 198 198 $head_array['ContentType'] = $this->getMessageType($msg_number, $tempHeader); 199 199 $head_array['Importance'] = $flag==0?"Normal":$importance[1]; … … 242 242 $to = $header->to; 243 243 $head_array['to'] = array(); 244 if($to[1] && $to[1]->host == ".SYNTAX-ERROR.") { //E-mails que n ão possuem o campo "para", vêm com o recipiente preenchido, porém com um recipiente a mais alegando erro de sintaxe.244 if($to[1] && $to[1]->host == ".SYNTAX-ERROR.") { //E-mails que não possuem o campo "para", vêm com o recipiente preenchido, porém com um recipiente a mais alegando erro de sintaxe. 245 245 $head_array['to']['name'] = $head_array['to']['email'] = NULL; 246 246 } … … 316 316 } 317 317 /** 318 * Fun ção que importa arquivos .eml exportados pelo expresso para a caixa do usuário. Testado apenas319 * com .emls gerados pelo expresso, e o arquivo pode ser um zip contendo v ários emls ou um .eml.318 * Função que importa arquivos .eml exportados pelo expresso para a caixa do usuário. Testado apenas 319 * com .emls gerados pelo expresso, e o arquivo pode ser um zip contendo vários emls ou um .eml. 320 320 */ 321 321 function import_msgs($params) { … … 408 408 } 409 409 /* 410 Remove os anexos de uma mensagem. A estrat égia para isso écriar uma mensagem nova sem os anexos, mantendo apenas411 a primeira parte do e-mail, que éo texto, sem anexos.412 O m étodo considera que o email émultpart.410 Remove os anexos de uma mensagem. A estratégia para isso é criar uma mensagem nova sem os anexos, mantendo apenas 411 a primeira parte do e-mail, que é o texto, sem anexos. 412 O método considera que o email é multpart. 413 413 */ 414 414 function remove_attachments($params) { … … 420 420 421 421 $headertemp = explode("\n",imap_fetchheader($this->mbox, imap_msgno($this->mbox, $params["msg_num"]))); 422 foreach($headertemp as $head) {//Se eu colocar todo o header do email d á pau no append, então procuro apenas o que interessa.422 foreach($headertemp as $head) {//Se eu colocar todo o header do email dá pau no append, então procuro apenas o que interessa. 423 423 $head1 = explode(":",$head); 424 424 if ( (strtoupper($head1[0]) == "TO") || … … 430 430 431 431 $msg = &new message_components($this->mbox); 432 $msg->fetch_structure($params["msg_num"]);/* O fetchbody tava trazendo o email com problemas na acentua ção.433 Ent ão uso essa classe para verificar a codificação e o charset,434 para que o m étodo decodeBody do expresso possa trazer tudo certinho*/432 $msg->fetch_structure($params["msg_num"]);/* O fetchbody tava trazendo o email com problemas na acentuação. 433 Então uso essa classe para verificar a codificação e o charset, 434 para que o método decodeBody do expresso possa trazer tudo certinho*/ 435 435 436 436 $all_body_type = strtolower($msg->file_type[$params["msg_num"]][0]); … … 468 468 $all_body_encoding, $all_body_charset 469 469 ) 470 ), "\\Seen"); //Append do novo email, s ó com header e conteúdo sem anexos.470 ), "\\Seen"); //Append do novo email, só com header e conteúdo sem anexos. 471 471 472 472 if(!$status) … … 537 537 $msg_info = $this->get_info_msg($new_params); 538 538 539 $this->mbox = $this->open_mbox($params['folder']); //N ão sei porque, mas se não abrir de novo a caixa dáerro.539 $this->mbox = $this->open_mbox($params['folder']); //Não sei porque, mas se não abrir de novo a caixa dá erro. 540 540 $msg_info['header'] = $this->get_info_head_msg($msg_number); 541 541 … … 1343 1343 $body = $this-> replace_links($body); 1344 1344 1345 //Remo ção de tags <span></span> para correção de erro no firefox1345 //Remoção de tags <span></span> para correção de erro no firefox 1346 1346 $body = mb_eregi_replace("<span><span>","",$body); 1347 1347 $body = mb_eregi_replace("</span></span>","",$body); 1348 //Corre ção para compatibilização com Outlook, ao visualizar a mensagem1348 //Correção para compatibilização com Outlook, ao visualizar a mensagem 1349 1349 $body = mb_ereg_replace('<!--\[','<!-- [',$body); 1350 1350 $body = mb_ereg_replace('<!\[endif\]-->', '<![endif]-->', $body); … … 1404 1404 */ 1405 1405 1406 // PHP 5.2.x - Remover assim que poss ível1406 // PHP 5.2.x - Remover assim que possÃvel 1407 1407 $body = preg_replace_callback( $pattern, 1408 1408 create_function( … … 1510 1510 $this->db = new db_functions(); 1511 1511 1512 // TODO: testar se existe um certificado no banco e verificar qual ᅵo mais atual.1512 // TODO: testar se existe um certificado no banco e verificar qual ᅧo mais atual. 1513 1513 if(!$certificado->dados['EXPIRADO'] && !$certificado->dados['REVOGADO'] && count($certificado->erros_ssl) < 1) 1514 1514 $this->db->insert_certificate(strtolower($certificado->dados['EMAIL']), $certificado->cert_assinante, $certificado->dados['SERIALNUMBER'], $certificado->dados['AUTHORITYKEYIDENTIFIER']); … … 1625 1625 foreach($msgs_to_exec as $msg_number) 1626 1626 { 1627 /*A fun ção imap_headerinfo não traz o cabeçalho completo, e sim alguns1628 * atributos do cabe çalho. Como eu preciso do atributo Importance1629 * para saber se o email é importante ou não, uso abaixo a função1627 /*A função imap_headerinfo não traz o cabeçalho completo, e sim alguns 1628 * atributos do cabeçalho. Como eu preciso do atributo Importance 1629 * para saber se o email é importante ou não, uso abaixo a função 1630 1630 * imap_fetchheader e busco o atributo importance nela para passar 1631 * para as fun ções ajax. Isso faz com que eu acesse o cabeçalho1631 * para as funções ajax. Isso faz com que eu acesse o cabeçalho 1632 1632 * duas vezes e de duas formas diferentes, mas em contrapartida, eu 1633 * n ão preciso reimplementar o método utilizando o fetchheader.1633 * não preciso reimplementar o método utilizando o fetchheader. 1634 1634 */ 1635 1635 … … 1719 1719 1720 1720 /** 1721 * M étodo que faz a verificação do Content-Type do e-mail e verifica se éum e-mail normal,1721 * Método que faz a verificação do Content-Type do e-mail e verifica se é um e-mail normal, 1722 1722 * assinado ou cifrado. 1723 * @author M ário César Kolling <mario.kolling@serpro.gov.br>1724 * @param $headers Uma String contendo os Headers do e-mail retornados pela fun ção imap_imap_fetchheader1725 * @param $msg_number O n úmero da mesagem1723 * @author Mário César Kolling <mario.kolling@serpro.gov.br> 1724 * @param $headers Uma String contendo os Headers do e-mail retornados pela função imap_imap_fetchheader 1725 * @param $msg_number O número da mesagem 1726 1726 * @return Retorna o tipo da mensagem (normal, signature, cipher). 1727 1727 */ … … 1745 1745 * Metodo que retorna todas as pastas do usuario logado. 1746 1746 * @param $params array opcional para repassar os argumentos ao metodo. 1747 * Se usar $params['noSharedFolders'] = true, ira retornar todas as pastas do usu ário logado,1747 * Se usar $params['noSharedFolders'] = true, ira retornar todas as pastas do usuário logado, 1748 1748 * excluindo as compartilhadas para ele. 1749 * Se usar $params['folderType'] = "default" ir áretornar somente as pastas defaults1750 * Se usar $params['folderType'] = "personal" ir áretornar somente as pastas pessoais1751 * Se usar $params['folderType'] = null ir áretornar todas as pastas1749 * Se usar $params['folderType'] = "default" irá retornar somente as pastas defaults 1750 * Se usar $params['folderType'] = "personal" irá retornar somente as pastas pessoais 1751 * Se usar $params['folderType'] = null irá retornar todas as pastas 1752 1752 * @return Retorna um array contendo as seguintes informacoes de cada pasta: folder_unseen, 1753 1753 * folder_id, folder_name, folder_parent e folder_hasChildren. … … 2077 2077 { 2078 2078 $body = $params['body']; 2079 //Compatibiliza ção com Outlook, ao encaminhar a mensagem2079 //Compatibilização com Outlook, ao encaminhar a mensagem 2080 2080 $body = mb_ereg_replace('<!--\[','<!-- [',$body); 2081 2081 } … … 3406 3406 function remove_accents($string) { 3407 3407 return strtr($string, 3408 "? Ó??ó?Ý?úÁÀÃÂÄÇÉÈÊËÍÌ?ÎÏÑÕÔÓÒÖÚÙ?ÛÜ?áàãâäçéèêëíì?îïñóòõôöúù?ûüýÿ",3408 "?Ã??ó?Ã?úÃÃÃÃÃÃÃÃÃÃÃÃ?ÃÃÃÃÃÃÃÃÃÃ?ÃÃ?áà ãâÀçéÚêëÃì?îïñóòõÎöúù?ûÌÜÿ", 3409 3409 "SOZsozYYuAAAAACEEEEIIIIINOOOOOUUUUUsaaaaaceeeeiiiiinooooouuuuuyy"); 3410 3410 } … … 3871 3871 3872 3872 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Insere emails no imap a partir do fonte do mesmo. Se o argumento timestamp for passado ele utiliza do script python 3873 ///expressoMail1_2/imap.py para inserir uma msg com o hor ário correto pois isso não é porssível com a função imap_append do php.3873 ///expressoMail1_2/imap.py para inserir uma msg com o horário correto pois isso não é porssÃvel com a função imap_append do php. 3874 3874 3875 3875 function insert_email($source,$folder,$timestamp,$flags){ … … 3927 3927 if (version_compare(PHP_VERSION, '5.2.0', '>=')){ 3928 3928 if(!$source = base64_decode($source,true)) 3929 return "error ".$source."Espa ços ".$i;3929 return "error ".$source."Espaços ".$i; 3930 3930 3931 3931 } 3932 3932 else { 3933 3933 if(!$source = base64_decode($source)) 3934 return "error ".$source."Espa ços ".$i;3934 return "error ".$source."Espaços ".$i; 3935 3935 } 3936 3936 … … 3968 3968 3969 3969 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Trata fontes de emails enviados via POST para o servidor por um xmlhttprequest, as partes codificados com 3970 //Base64 os "+" s ão substituidos por " " no envio e essa função arruma esse efeito.3970 //Base64 os "+" são substituidos por " " no envio e essa função arruma esse efeito. 3971 3971 3972 3972 function treat_base64_from_post($source){ … … 3994 3994 } 3995 3995 3996 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para fun ção insert_mail.3996 //Por Bruno Costa(bruno.vieira-costa@serpro.gov.br - Recebe os fontes dos emails a serem desarquivados, separa e envia cada um para função insert_mail. 3997 3997 3998 3998 function unarchive_mail($params)
Note: See TracChangeset
for help on using the changeset viewer.