$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->from)));
@list($padron, $ej, $ent, $codigo) = validar_cabecera($hdr);
if ($padron) {
logs('Cabecera válida', DEBUG);
. "Recuerde que el formato del asunto es estricto:\n"
. "[padrón] [ejercicio].[entrega] [código]\n\n"
. "Donde [padrón] es su número de padrón, [ejercicio] es el número de\n"
- . "ejercicio (1 a 4), [entrega] el número de entrega (1 o 2) y [código]\n"
- . "es el código verificador que le fue asignado por la cátedra.\n"
+ . "ejercicio (1 a 4), [entrega] el número de entrega (1 entrega, 2 reentrega)\n"
+ . "y [código] es el código verificador que le fue asignado por la cátedra.\n"
);
}
imap_delete($mbox, 1);
X-Mailer: $NAME $VERSION
X-Priority: 5
EOT;
- mail($to, $subject, $body, $headers);
+ mail(decode_header($to), $subject, $body, $headers);
return true;
}
*/
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+(\d)\.(\d)\s+(.*)$/', $subject, $m)) {
return array_slice($m, 1, 5);
}
return false;
function preparar_entrega($intento, $mbox, $msgid, $dir) {
logs('Acá debería verificar el cuerpo del mensaje', DEBUG);
+ $path = "$dir/" . $intento->path('intentos');
$mail = imap_fetchstructure($mbox, $msgid);
+ if (!mkdir_p($path)) return 'No se pudo crear el directorio';
foreach ($mail->parts as $id => $part) {
$fname = part_filename($part);
if ($fname) {
logs("Escribiendo archivo '$fname' [enc={$part->encoding}]", DEBUG);
- $body = imap_fetchbody($mbox, $msgid, $id + 1);
- $path = "$dir/" . $intento->path('intentos');
- if (!mkdir_p($path)) return 'No se pudo crear el directorio';
- if (!file_put_contents("$path/$fname", decode_body($body, $part->encoding))) return "Error al guardar el archivo $fname";
+ $body = decode_body(imap_fetchbody($mbox, $msgid, $id + 1), $part->encoding);
+ if (!$body) return "El archivo '$fname' está vacío";
+ if (!file_put_contents("$path/$fname", $body)) return "Error al guardar el archivo $fname";
}
//if (part_is_source($part) $has_sources = true;
//elseif (part_mime_type($part) == 'application/zip') $has_sources = true;
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