Entradas

Mostrando las entradas etiquetadas como emails

Mailman y las copias ocultas

Si por un casual recibís los siguientes errores en el mailman y no encontráis explicación posible a por qué siendo enviados los mensajes a las direcciones de manera correcta aparece, la causa es que no soporta el envío con copias ocultas sin pasar primeramente por la aprobación del moderador. Ha sido retenido en espera de que el moderador de la lista lo revise y apruebe. Ha sido retenido por: El mensaje no va dirigido explícitamente a la lista O se mandará el mensaje a la lista o se le enviará una notificación con la decisión del moderador. O la versión en inglés Message has implicit destination

Errores comunes correos Hotmail

Imagen
Cuando tenemos un sitio web donde los usuarios pueden dejar su correo electrónico para registrarse en diferentes servicios como pueden ser: alta de usuarios comentarios boletines electrónicos suscripciones Corremos el riesgo de que los usuarios de nuestra web introduzcan el correo electrónico mal a propósito o por equivocación. Voy a tratar los segundos, y dar los errores más comunes que cometen los usuarios cuando nos dejan su dirección de correo electrónico. Comienzo por las direcciones de correo de Hotmail porque están bastante extendidas y son mas complicadas de escribir que las de otros servicios como gmail. El estudio lo he hecho basándome en una base de datos con 60 mil direcciones de correo electrónico de Hotmail (exactamente 60276). La tasa de error para direcciones de Hotmail es de 0,56 % (redondeando vendría a ser 6 direcciones mal por cada mil bien). La tasa de error para yahoo es del 0,23 % y la de gmail del 0,47 %. Aquí os dejo una tabla con los e...

Facebook falla con emails .info

Hoy al ir a crear un grupo en facebook he puesto la siguiente dirección info@ecine.info y de repente me dice que esta dirección no es válida, luego de poner mi dirección normal me he dado cuenta que facebook da error en las validaciones de emails con extensión .info. A ver cuando lo corrigen.

Validar un email con PHP

Bueno hoy realmente estoy productivo, tenía bastantes cosas pendientes y aprovecho para escribirlas. Hace unos días leí el que es a mi entender el mejor artículo de validación de correos electrónicos con PHP , básicamente el mejor porque piensa como yo el autor, y me ha dado por profundizar en este artículo con algunas implementaciones que yo mismo he realizado. Es totalmente cierto que validar un correo electrónico es algo complejo, de echo me encantaría tener el código que utilizan en email valido para tener tanta efectividad en sus comprobaciones, conmigo realmente no ha fallado, pero como no lo tengo os planteo las posibles soluciones. Lo primero es validar con una expresión regular el formato del email, la expresión la pueden tener en mi artículo Extraer emails de un texto . Luego vienen los problemas. Dependiendo de lo que queramos hacer es más útil o no una validación más estricta, yo voy a plantear el caso de suscribirse a un boletín lo cual nuestro objetivo es recibir m...

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 ...

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"; xxxx...

Tu propio gestor de correos con PHP

Ya hemos visto como enviar correos con PHP utilizando phpmailer, correos con adjuntos y con todas las posibilidades, ahora veamos como recibir y leer los correos que nos envían a nuestro buzón con la clase receivemail. Incluimos la clase include_once '../clases/receivemail.class.php'; // Creamos el objeto receivemail, es importante en esta función poner solo los 4 parámetros siguientes, en la mayoria de servidores de correo da fallo si incluimos el 5 parámetro el cual en teoría es para servidores que requieren autentificación, pero en la práctica no es necesario. // Algunos de los errores que nos pueden dar son los siguientes: Warning: imap_open() [function.imap-open]: Couldn't open stream {(host):(puerto)/(protocolo)}INBOX in (url_codigo) on line (linea) Certificate failure for (host): self signed certificate: (url_certificado) $obj= new receiveMail(USUARIO,CLAVE,DIRECCION_DE_CORREO,SERVIDOR); // Connectar al buzon de correo por defecto pop3 y puerto 110 $obj->connect()...

Enviar archivos PDF creados dinámicamente

Gracias a las clases DOMPDF y PHPMailer podemos crear un archivo PDF dinámicamente y enviarlo como adjunto en un correo electrónico. Actualmente el método que utilizo es crear el archivo PDF, adjuntarle al mail y borrarlo. Reconozco que lo ideal sería crear el archivo en memoria y enviarlo así evitamos tener que crearlo y borrarlo, pero aún no he encontrado una función que me tome al archivo como cadena lo convierta en un documento sin crearlo físicamente en el disco duro, o sea que sea todo temporal; por ello si alguien lo sabe que lo comparta. // incluyo las dos clases dompdf y php mailer include_once '../class/class.phpmailer.php'; include_once '../dompdf/dompdf_config.inc.php'; // creo el objeto phpmailer $mail = new phpmailer(); // asigno el envío por SMTP mucho más rápido y fiable $mail->Mailer = "smtp"; // mi servidor requiere autentificación $mail->SMTPAuth = true; // utilizo constantes almacenadas fuera del script para darle más seguridad a los ...

HTML 2 (F)PDF VS DOMPDF

Yo utilizo ambas clases pero dependiendo para que escojo una u otra, veamos las ventajas que veo en cada una de ellas. HTML2FPDF tiene una velocidad de creación de los documentos un poco más rápida pero no es algo realmente a considerar para diferenciar una de otra. Lo cual no es el caso para crear páginas horizontales para lo cual DOMPDF es perfecta pues con HTML2FPDF hay que hacer ciertos apaños como poner manualmente el ancho de la página para que te coja los márgenes correctamente sino te cra una página horizontal pero con los márgenes de una vertical, o sea que solo tienes espacio útil la mitad de la página prácticamente. El uso de CSS en ambas es realmente muy precario aunque si has de escojer debes utilizar DOMPDF que soporta unos cuantos más y según ellos lee archivos CSS, realmente no te va a cojer del archivo css ni la mitad de las propiedades. En cuanto a cabeceras, pies de página e imágenes ambos lo soportan en teoria. El uso de tablas es otro de los factores a tener en cue...

Envío de boletín a listas de correos pirateadas

Este estudio es totalmente empírico y solo muestra para este caso el comportamiento de los internautas respecto al envío masivo de boletines electrónicos a personas que no lo han solicitado. Tomando una lista de 18 mil correos electrónicos como muestra enviaremos un boletín semanal durante 3 meses. Los resultados son los siguientes: solo recibiras confirmaciones de lectura o de envío de un 14 % de los correos enviados. el 27% son direcciones inválidas, que no existen ya los usuarios o que han cambiado de dirección. de los correos recibidos son útiles solo el 86 %, el resto o es spam generado a nuestra cuenta de correo o es correo duplicado proveniente de algunos servidores de correo. solo son realmente leídos el 5% de los boletines, para un negocio esta cifra no está mal pues implica un 5 % más de posibles clientes y el envío del boletín es un medio de propaganda realmente barato, pues solo es la inversión inicial de programar la herramienta. de este 5 % que realmente lee el correo (ba...

Boletín electrónico VS RSS

Sin lugar a dudas el envío de boletines es una de las herramientas fundamentales para la comunicación de eventos y novedades de un sitio web. Las ventajas del boletín irán decayendo con el paso del tiempo con el uso cada vez más extenso de fuentes RSS, ¿por qué? fundamentalmente porque una fuente RSS te tienes que suscribir obligatoriamente tú (evitando de esta forma el envío de boletines usando listas de correo extraidas de internet mediante robots). Actualmente la mayoría de los internautas siguen muy familiarizados con el mail antes que las fuentes RSS pero poco a poco y esto gracias fundamentalmente al boom de los blogs está cambiando. En próximas entradas publicaré un estudio realizado por mi sobre el envío de boletines utilizando listas de correo de personas que no se han suscrito, algo ilegal y penalizado, pero muy utilizado por varias empresas para transmitir a miles de correos electrónicos información sobre sus productos.

Extraer emails de un texto

He buscado mucho por internet para sacar direcciones de correo de una cadena y he encontrado algunas funciones utilizando expresiones regulares pero siempre se me han quedado cortas, en esta que os muestro la he modificado y admite todo tipo de email, de subdominios, con extensiones de 4 letras como las .info, etc. Las aplicaciones son varias puedes leer un fichero en una cadena, un email de un buzón de correo, en fin cualquier cadena de cualquier longitud está soportada. 1 function tieneEmails( $cuerpo ){ 2 stripslashes ( $cuerpo ); 3 $exp_email = '[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})+' ; 4 if ( preg_match_all ( "/ $exp_email /i" , $cuerpo , $emails , PREG_SET_ORDER)) 5 return TRUE ; 6 return FALSE ; 7 } La variable $exp_email contiene la expresion regular y es el motor de la función. La función preg_match_all busca todas las coincidencias y las almacena en el arry $emails, con ellas po...