Entradas

Mostrando entradas de febrero, 2009

Windows 7 o el tormento en 64 bits

Fue toda una ilusión para mi descubrir (por ignorancia absoluta de mi parte) que podía instalar un SO de 64 bits, y cual e ido a escoger la beta de Windows 7 de la cual solo escucho elogios, halagos y un sinnúmero de buenos comentarios. Pues vaya. Poniéndoos en antecedentes quiero deciros que nunca he sido detractor de Microsoft por el contrario, detesto Linux y no me creo capaz de acarrear con los gatos de tener un Mac al cual tampoco le veo muchas ventajas (también por desconocimiento de mi parte) para mi. En fin una vez dicho esto quiero deciros que Windows 7 para 64 bits ha sido con diferencia el peor SO con el que he tenido el placer de trabajar (aclaro lo de 64 bits porque tengo la esperanza de que con el de 32 no me pase). En fin entre los problemas está que no puedo sincronizar mi iPod ¿problema del iTunes de 64 bits? ó ¿problema de Windows 7?, me da igual. Los famosos y nuevos y relucientes gadgets nunca los he podido poner, no sé porque ¿será que mi Intel Core 2 Quad con

Unir cuerpo y adjunto en el mail

Ver POST anteriores ( 1 y 2 ) para detalles previos. Una vez tenemos el header, la cabecera del cuerpo del mensaje y la cadena con todos los adjuntos la debemos ensamblar de la siguiente forma: if($extension_archivo){                 $cuerpo = $sCabeceraTexto.$cuerpo;                 $cuerpo .= $sAdjuntos."\n\n"."--{$mime_boundary}--\n";             }             mail($email,"Ticket ".$a_campos_mensaje['ticket']." ".$this->titulo,$cuerpo,$headers);    IMPORTANTE: Debemos respetar todos los saltos de línea “\n” porque el error más común es incluir “\r” y esto puede enviar el correo con un cuerpo vacío y el adjunto, o el cuerpo vacío y los adjuntos más un adjunto adicional con el cuerpo del mensaje, dependiendo de la interpretación de los saltos de línea que hagamos. Importante también terminar siempre el correo con la línea "\n\n"."--{$mime_boundary}--\n", nótese que en esta hay “—” tanto al in

Insertar adjuntos en el mensaje

Por cada archivo adjunto que tengamos (ver entrada anterior para la primera parte) debemos repetir este proceso: $sAdjuntos = "\n\n--{$mime_boundary}\n"; $sAdjuntos .= "Content-type: application/octet-stream; name=\"".NOMBRE+EXTENSION."\"\r\n";; $sAdjuntos .= "Content-Transfer-Encoding: BASE64\r\n"; $sAdjuntos .= "Content-disposition: attachment;filename=\"".NOMBRE+EXTENSION."\"\r\n\n"; $sAdjuntos .= chunk_split(base64_encode(file_get_contents(URL_COMPLETA))); Importante la última línea pues es donde se lee el contenido del archivo y se convierte a base 64 que es el formato establecido en los correos electrónicos. Véase que el tipo MIME en este caso es application/octet-stream aunque también se podría predefinir como el tipo del archivo utilizando TYPE (Ej $_FILE[‘formulario’][‘type’]) que nos devuelve el tipo MIME del archivo, la desventaja de utilizar esto es que para documentos adjunto

Función mail con adjuntos

Acabo de romperme la cabeza con este tema por lo de siempre, algún carácter mal escrito o sabe qué. En fin que adjuntar un archivo utilizando la función mail de php en realidad no llega a ser complicado si se es meticuloso y muy cuidadoso sobre todo con los saltos de línea. Veamos un poco los pasos. Primero que nada definimos la cabecera del mail con el tipo mime y el remitente (opcional lo del remitente). $headers = "MIME-Version: 1.0\r\n";  $headers .= "From: ".REMITENTE." <".REMITENTE_EMAIL.">\r\n"; Luego debemos especificar si hay archivos adjuntos un tipo de cabecera y si no el tipo del mensaje como tal, por ejemplo: if($hay_adjuntos){ $headers .= "Content-Type: multipart/mixed;  boundary=\"{$mime_boundary}\""; $sCabeceraTexto = "--{$mime_boundary}\n"."Content-Type: text/html; charset=\"iso-8859-1\"\r\n"."Content-Transfer-Encoding: 7bit\n\n"; xxxxxCODIGO P