- Timestamp:
- 07/11/12 11:45:10 (12 years ago)
- Location:
- branches/2.4
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.4
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
/trunk merged eligible /sandbox/2.4.1-3 6237-6527
-
Property
svn:mergeinfo
set to
(toggle deleted branches)
-
branches/2.4/expressoMail1_2/inc/class.imap_functions.inc.php
r6735 r6754 1095 1095 function get_info_msg($params) 1096 1096 { 1097 1098 1097 if(isset($params['alarm'])){ 1099 1098 $alarm = $params['alarm']; … … 1140 1139 //$return['signature'] = $return_get_body['signature']; 1141 1140 } 1142 1141 1143 1142 $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 1144 1143 if (preg_match($pattern, $header_, $fields)) 1145 $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0])));1144 $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0]))); 1146 1145 1147 1146 $return['Recent'] = $header->Recent; … … 1400 1399 $return['login'] = $_SESSION['phpgw_info']['expressomail']['user']['account_id'];//$GLOBALS['phpgw_info']['user']['account_id']; 1401 1400 $return['reply_toaddress'] = $header->reply_toaddress; 1402 1401 1403 1402 if(($return['from']['email'] == '@unspecified-domain' || $return['sender']['email'] == null) && $return['msg_folder'] == 'INBOX/Drafts'){ 1404 1403 $return['from']['email'] = "Rascunho"; 1405 1404 } 1406 1405 1407 1406 if(strpos($return['toaddress2'], 'undisclosed-recipients') !== false){ 1408 1407 $return['toaddress2'] = $this->functions->getLang('without destination'); … … 1677 1676 break; 1678 1677 1679 1678 case 'CANCEL': 1680 1679 1681 1680 $ical = $icalService->getComponent('vevent'); … … 2811 2810 $header = $this->get_header($msg_numb); 2812 2811 $header_ = imap_fetchheader($this->mbox, $msg_numb, FT_UID); 2813 $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 2814 if (preg_match($pattern, $header_, $fields)) 2815 $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0]))); 2812 $pattern = '/^[ \t]*Disposition-Notification-To:.*/mi'; 2813 if (preg_match($pattern, $header_, $fields)) 2814 $return['DispositionNotificationTo'] = base64_encode(trim(str_ireplace('Disposition-Notification-To:', '', $fields[0]))); 2816 2815 2817 2816 $message_id = $header->message_id; … … 2918 2917 if($att['disposition'] == 'embedded' && $isHTML) //Caso mensagem em texto simples converter os embedded para attachments 2919 2918 { 2920 $body = str_replace('"../prototype/getArchive.php?mailAttachment='.$att['id'].'"', $att['name'], $body);2921 $mailService->addStringImage(base64_decode($att['source']), $att['type'], mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1')); 2919 $body = str_replace('"../prototype/getArchive.php?mailAttachment='.$att['id'].'"', '"'.mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1').'"', $body); 2920 $mailService->addStringImage(base64_decode($att['source']), $att['type'], mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1')); 2922 2921 } 2923 2922 else 2924 2923 $mailService->addStringAttachment(base64_decode($att['source']), mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), $att['type'], 'base64', isset($att['disposition']) ? $att['disposition'] :'attachment' ); 2925 2924 2926 2925 $message_size_total += $att['size']; … … 2937 2936 { 2938 2937 $body = str_ireplace('<img src="./inc/get_archive.php?msgFolder='.$value['folder'].'&msgNumber='.$value['uid'].'&indexPart='.$value['part'].'" />' , '<img src="'.$att['name'].'" />', $body); 2939 $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') ); 2938 $mailService->addStringImage($att['source'], $att['type'],mb_convert_encoding($att['name'], 'ISO-8859-1' , 'UTF-8,ISO-8859-1') ); 2940 2939 } 2941 2940 else … … 2948 2947 $mbox_stream = $this->open_mbox(mb_convert_encoding($value['folder'] , 'ISO-8859-1' , 'UTF7-IMAP')); 2949 2948 $rawmsg = $this->getRawHeader($value['uid']) . "\r\n\r\n" . $this->getRawBody($value['uid']); 2950 2951 $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' );2949 2950 $mailService->addStringAttachment($rawmsg, mb_convert_encoding(base64_decode($value['name']), 'ISO-8859-1' , 'UTF-8,ISO-8859-1'), 'message/rfc822', '7bit', 'attachment' ); 2952 2951 $message_size_total += mb_strlen($rawmsg); //Adiciona o tamanho do anexo a variavel que controlao tamanho da msg. 2953 2952 unset($rawmsg); … … 3029 3028 */ 3030 3029 //////////////////////////////////////////////////////////////////////////////////////////////////// 3031 3032 3030 if ($isHTML) 3033 { 3034 $defaultStyle = ''; 3035 3036 if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) 3037 $defaultStyle .= ' font-family:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor'] .';'; 3038 3039 if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) 3040 $defaultStyle .= ' font-size:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor'].';'; 3041 3042 $body = '<span class="'.$defaultStyle.'">'.$body.'</span>'; 3031 { 3032 $this->rfc2397ToEmbeddedAttachment($mailService , $body); 3033 3034 $defaultStyle = ''; 3035 if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor']) 3036 $defaultStyle .= ' font-family:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_family_editor'] .';'; 3037 3038 if(isset($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) && $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor']) 3039 $defaultStyle .= ' font-size:'.$_SESSION['phpgw_info']['user']['preferences']['expressoMail']['font_size_editor'].';'; 3040 3041 $body = '<span class="'.$defaultStyle.'">'.$body.'</span>'; 3043 3042 $mailService->setBodyHtml($body); 3044 } 3043 } 3045 3044 else 3046 3045 $mailService->setBodyText($body); … … 3074 3073 error_log("$now - $userip - $sent [$subject] - $userid => $addrs\r\n", 3, "/home/expressolivre/mail_senders.log"); 3075 3074 } 3076 if ($_SESSION['phpgw_info']['user']['preferences']['expressoMail']['use_dynamic_contacts']) { 3077 $contacts = new dynamic_contacts(); 3078 $new_contacts = $contacts->add_dynamic_contacts($toaddress . "," . $ccaddress . "," . $ccoaddress); 3079 return array("success" => true, "new_contacts" => $new_contacts); 3080 } 3081 3082 if($params['uids_save'] ) 3083 $this->delete_msgs(array('folder'=> $params['save_folder'] , 'msgs_number' => $params['uids_save'])); 3075 if($params['uids_save'] ) 3076 $this->delete_msgs(array('folder'=> $params['save_folder'] , 'msgs_number' => $params['uids_save'])); 3084 3077 3085 3086 3078 //return array("success" => true, "folder" => $folder_list); 3087 3079 return array("success" => true, "load" => $has_new_folder); … … 3839 3831 } 3840 3832 3841 function send_notification($params) 3842 { 3843 $mailService = ServiceLocator::getService('mail'); 3833 function send_notification($params) 3834 { 3835 $mailService = ServiceLocator::getService('mail'); 3844 3836 $body = lang("Your message: %1",$params['subject']) . '<br>'; 3845 3837 $body .= lang("Received in: %1",date("d/m/Y H:i",$params['date'])) . '<br>'; 3846 3838 $body .= lang("Has been read by: %1 < %2 > at %3", $_SESSION['phpgw_info']['expressomail']['user']['fullname'], $_SESSION['phpgw_info']['expressomail']['user']['email'], date("d/m/Y H:i")); 3847 return $mailService->sendMail(base64_decode($params['notificationto']), 3848 $_SESSION['phpgw_info']['expressomail']['user']['email'],3849 $this->htmlspecialchars_decode(lang("Read receipt: %1",$params['subject'])),3850 $body); 3839 return $mailService->sendMail(base64_decode($params['notificationto']), 3840 $_SESSION['phpgw_info']['expressomail']['user']['email'], 3841 $this->htmlspecialchars_decode(lang("Read receipt: %1",$params['subject'])), 3842 $body); 3851 3843 3852 3844 } … … 4907 4899 $return['msgs'][$i]['flag'] .= $msg->Deleted ? $msg->Deleted : ''; 4908 4900 4909 $header = imap_fetchheader( $imap, $v , FT_UID ); // Necessario para recuperar se a mensagem é importante ou não.4901 $header = imap_fetchheader( $imap, $v , FT_UID ); // Necessario para recuperar se a mensagem é importante ou não. 4910 4902 $importante = array(); 4911 4903 … … 5188 5180 * @param <Array> <$proc> <ações do filtro> 5189 5181 * @return <Regras do usuário em Array> 5190 * @access <public>5182 * @access public 5191 5183 */ 5192 5184 function apliSieveFilter($msgs , $proc) … … 5229 5221 return $ret; 5230 5222 } 5223 5224 /** 5225 * Método que convert imagens no formato rfc2397 para Embedded Attachment 5226 * 5227 * @license http://www.gnu.org/copyleft/gpl.html GPL 5228 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 5229 * @sponsor Caixa Econômica Federal 5230 * @author Cristiano Corrêa Schmidt 5231 * @param <MailService> <$mailService> <Referencia objeto MailService> 5232 * @param <String> <$body> <Referencia Corpo do email> 5233 * @return <void> 5234 * @access public 5235 */ 5236 function rfc2397ToEmbeddedAttachment( &$mailService , &$body ) 5237 { 5238 $matches = array(); 5239 preg_match_all("/src=[\'|\"]+data:([^,]*);base64,([a-zA-Z0-9\+\/\=]+)[\'|\"]+/i", $body, $matches, PREG_SET_ORDER); //Resgata imagens em rfc2397 5240 5241 foreach ($matches as $i => &$v) 5242 { 5243 $ext = explode(';', $v[1]); //quebra todos os parametros em um array. 5244 $mailService->addStringImage(base64_decode($v[2]), $ext[0] , 'EmbeddedImage'.$i.'.'.$this->mimeToExtension($v[1])); 5245 $body = str_replace($v[0], 'src="EmbeddedImage'.$i.'.'.$this->mimeToExtension($ext[0]).'"' , $body); 5246 } 5247 } 5248 5249 /** 5250 * Método que retorna a extensão do arquivo atraves do mime type 5251 * 5252 * @license http://www.gnu.org/copyleft/gpl.html GPL 5253 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 5254 * @sponsor Caixa Econômica Federal 5255 * @author Cristiano Corrêa Schmidt 5256 * @param <String> <$mimeType> <Mime Type do arquivo> 5257 * @return <String> <extensão> 5258 * @access public 5259 */ 5260 function mimeToExtension($mimeType) 5261 { 5262 switch ( $mimeType ) 5263 { 5264 case 'image/bmp' : 5265 return 'bmp'; 5266 case 'image/cgm' : 5267 return 'cgm'; 5268 case 'image/vnd.djvu' : 5269 return 'djv'; 5270 case 'image/gif' : 5271 return 'gif'; 5272 case 'image/x-icon' : 5273 return 'ico'; 5274 case 'image/ief' : 5275 return 'ief'; 5276 case 'image/jpeg' : 5277 return 'jpg'; 5278 case 'image/x-macpaint' : 5279 return 'mac'; 5280 case 'image/pict' : 5281 return 'pct'; 5282 case 'image/png' : 5283 return 'png'; 5284 case 'image/x-quicktime' : 5285 return 'qti'; 5286 case 'image/x-rgb' : 5287 return 'rgb'; 5288 case 'image/tiff' : 5289 return 'tif'; 5290 default: 5291 return ''; 5292 } 5293 5294 } 5295 5296 5297 /** 5298 * Método que retorna as mensagens com a flag $FilteredMessage que representa as mensagens filtradas que devem ser alertadas para o usuário 5299 * 5300 * @license http://www.gnu.org/copyleft/gpl.html GPL 5301 * @author Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 5302 * @sponsor Caixa Econômica Federal 5303 * @author Airton Bordin Junior <airton@prognus.com.br> 5304 * @author Marcieli <marcieli@prognus.com.br> 5305 * @author Marcos <marcosw@prognus.com.br> 5306 * @param <Array> <$paramFolders> <Pastas onde devem ser buscadas as mensagens> 5307 * @return <Mensagens encontradas com a flag $FilteredMessage> 5308 * @access <public> 5309 */ 5310 function getFlaggedAlertMessages($paramFolders) { 5311 5312 $folders = explode(",", $paramFolders['folders']); 5313 5314 $messages = array(); 5315 $result = array(); 5316 $label = '$FilteredMessage'; 5317 5318 foreach ($folders as $folder) { 5319 $this->mbox = $this->open_mbox($folder); 5320 /* Não deletadas, não lidas e com a flag */ 5321 $messages = imap_search($this->mbox, 'UNDELETED UNSEEN KEYWORD "$FilteredMessage"', SE_UID); 5322 if(is_array($messages)) 5323 foreach ($messages as $k => $m) { 5324 $headers = imap_fetch_overview($this->mbox, $m, FT_UID); 5325 $date = explode(" ", $headers[0]->date); 5326 $result[$m."_".$folder] = array ( 5327 'udate' => $headers[0]->udate, 5328 'smalldate' => $date[5], 5329 'from' => $headers[0]->from, 5330 'subject' => self::decodeMimeString($headers[0]->subject), 5331 'msg_number' => $m, 5332 'msg_folder' => $folder 5333 ); 5334 } 5335 } 5336 $result_final = array(); 5337 foreach ($result as $r){ 5338 $result_final[] = $r; 5339 } 5340 5341 return $result_final; 5342 } 5343 5344 /** 5345 * Esta função é chamada ao clicar sobre uma mensagem listada nos alertas de Filtro por Remetente 5346 * remove a flag e chama a função que recupera os dados da mensagem, para serem utilizados na abertura da aba de leitura da msg 5347 */ 5348 function open_flagged_msg($params){ 5349 $message_number = $params['msg_number']; 5350 $message_folder = $params['msg_folder']; 5351 $alarm = $params['alarm']; 5352 if ($message_folder && $message_number) { 5353 $this->mbox = $this->open_mbox($message_folder); 5354 imap_clearflag_full($this->mbox, $message_number, '$FilteredMessage', ST_UID); 5355 } 5356 $r = $this->get_info_msg(array('msg_number' => $message_number, 'msg_folder' =>urlencode($message_folder), 'alarm' => ($alarm))); 5357 return $r; 5358 } 5359 5360 /** 5361 * Remove a flag que caracteriza uma mensagem como alertada por Filtro por Remetente. 5362 * se houver o parametro msg_number, então remove a flag de uma msg especifica 5363 * se não houver o parametro msg_number, mas sim o from, então remove a flag de todas as msgs da pasta (parametro from), 5364 * e que o remetente for o from. 5365 */ 5366 function removeFlagMessagesFilter($params){ 5367 $message_number = $params['msg_number']; 5368 $folder = $params['folder']; 5369 5370 if(isset($message_number)){ 5371 if(isset($folder)){ 5372 $message_number = explode(',', $message_number); 5373 $this->mbox = $this->open_mbox($folder); 5374 foreach ($message_number as $k => $m) { 5375 imap_clearflag_full($this->mbox, $m, '$FilteredMessage', ST_UID); 5376 } 5377 } 5378 } 5379 else{ 5380 $from = $params['from']; 5381 if(isset($folder) && isset($from)){ 5382 $this->mbox = $this->open_mbox($folder); 5383 $messages = imap_search($this->mbox, 'UNDELETED UNSEEN KEYWORD "$FilteredMessage"', SE_UID); 5384 } 5385 if(is_array($messages)){ 5386 foreach ($messages as $k => $m) { 5387 $headers = imap_fetch_overview($this->mbox, $m, FT_UID); 5388 if(strpos($headers[0]->from, $from) > 0){ 5389 imap_clearflag_full($this->mbox, $m, '$FilteredMessage', ST_UID); 5390 } 5391 } 5392 } 5393 } 5394 5395 return array('status' => "success"); 5396 } 5397 5231 5398 } 5232 5399 ?>
Note: See TracChangeset
for help on using the changeset viewer.