]> git.llucax.com Git - software/sercom-old.git/commitdiff
Bugfix. Se decodifican los headers MIME con caracteres no ASCII antes de validar...
authorLeandro Lucarella <llucax@gmail.com>
Fri, 1 Apr 2005 05:25:23 +0000 (05:25 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 1 Apr 2005 05:25:23 +0000 (05:25 +0000)
src/sc_fetch

index 7a1e407a34450eef7118312c851a30bbbbb72c37..82bf9022efd911db0ea606d8d6447ef750e14832 100755 (executable)
@@ -90,7 +90,7 @@ while (1) {
     $mbox_errcount = 0;
     logs('Conectado como '.@$mconf['user']." a $mailbox", DEBUG);
     if (imap_num_msg($mbox) and $hdr = imap_headerinfo($mbox, 1)) {
     $mbox_errcount = 0;
     logs('Conectado como '.@$mconf['user']." a $mailbox", DEBUG);
     if (imap_num_msg($mbox) and $hdr = imap_headerinfo($mbox, 1)) {
-        logs("Nuevo mail '{$hdr->subject}' de {$hdr->fromaddress}");
+        logs(sprintf("Nuevo mail '%s' de %s", decode_header($hdr->subject), decode_header($hdr->subject)));
         @list($padron, $ej, $ent, $codigo) = validar_cabecera($hdr);
         if ($padron) {
             logs('Cabecera válida', DEBUG);
         @list($padron, $ej, $ent, $codigo) = validar_cabecera($hdr);
         if ($padron) {
             logs('Cabecera válida', DEBUG);
@@ -176,7 +176,7 @@ Return-Path: {$mconf['admin']}
 X-Mailer: $NAME $VERSION
 X-Priority: 5
 EOT;
 X-Mailer: $NAME $VERSION
 X-Priority: 5
 EOT;
-    mail($to, $subject, $body, $headers);
+    mail(decode_header($to), $subject, $body, $headers);
     return true;
 }
 
     return true;
 }
 
@@ -185,7 +185,8 @@ EOT;
  */
 function validar_cabecera($hdr) {
     // Subject: padron nro_ej nro_entrega clave_alumno
  */
 function validar_cabecera($hdr) {
     // Subject: padron nro_ej nro_entrega clave_alumno
-    if (preg_match('/^\s*(\d{5})\s+([1-4])\.([12])\s+(.*)$/', $hdr->subject, $m)) {
+    $subject = decode_header($hdr->subject);
+    if (preg_match('/^\s*(\d{5})\s+([1-4])\.([12])\s+(.*)$/', $subject, $m)) {
         return array_slice($m, 1, 5);
     }
     return false;
         return array_slice($m, 1, 5);
     }
     return false;
@@ -293,4 +294,13 @@ function fix_eol($str) {
     return str_replace("\r\n", "\n", $str);
 }
 
     return str_replace("\r\n", "\n", $str);
 }
 
+function decode_header($str) {
+    $elems = imap_mime_header_decode($str);
+    $result = '';
+    foreach ($elems as $elem) {
+        $result .= $elem->text;
+    }
+    return $result;
+}
+
 ?> 
\ No newline at end of file
 ?> 
\ No newline at end of file