Cómo puedo hacer para enviar una página html por mail para que se vea en correos web como hotmail o yaho?, Con html puede hacer que se vea en outlok, pero no en hotmail.
Es posible con php?
| ||||
Reforzando la Pregunta Saludos. Utilizando la función mail() de PHP podemos enviar emails en formato html. La cosa es que cuando uno envia un mail utilizando por ejemplo un for o un while, a las cuentas de sean de hotmail o yahoo no llegan nunca. La verdad no he descubierto el porque de esta situación y hasta los momentos nadie me lo ha podido explicar claramente. Algunos dicen que es problema de servidor que esta enviando, otros que en la forma como se contruye la función mail(), pero al final....... Por qué los recibo con cualquier cuenta, ,menos con hotmail o yahoo ???? Aún es un misterio para mi. Ojala y venga alguién y nos muestre la luz.....jejejeej Gracias |
| ||||
Me esperaba una respuesta pero por lo visto nadie lo sabe. Hace tiempo me encontré con el mismo problema, pero no lo consegí resolver. Por suerte era para una página de caracter personal sobre la .electrónica |
| |||
Dices que el problema se te plantea cuando haces un mail con un bucle...Bueno, la verdad es que no sé la razón pero...podría ser posible que la función mail no pudiera hacer el envío a la primera debido a saturación de hotmail o yahoo y que sea necesario intentarlo varias veces, dejando un tiempo de espera entre ellas. Es sólo una idea. Si te funciona me lo cuentas y aprendemos los dos. Un saludo. |
| |||
El problema parece estar en las cabeceras y los registros MX del servidor de mail q se use ... y los filtros de Spam de Hotmail y servicios de mail similares ... Con respecto a las cabeceras .. cabeceras tipo: "X-Mailer: blablabla\n" donde blablabla es un cliente correo falso .. Hotmail y demas .. suele identificar ese mail como correo "masivo" (Spam) ... Lo ideal es usar algo com MS Outlook .. o alguno "conocido" (editen las propiedades de un e-mail y vean las cabeceras del X-mailer por ejemplo). Y lo de los registros MX .. pues solo lo se de oidas .. pero viene a ser como el DNS pero para mail ...(si me equivoco me corrigen). Un saludo, pd: hace tiempo .. alguien en el foro preguntó lo mismo .. El mail le llegaba pero le caia al la carpeta "spam" del Hotmail .. la solución fue esa del X-mailer como cabeceras .. |
| ||||
Hace Mucho tiempo yo tenia el mismo problema, logré solucionarlo, pero lamentablemente no estoy en mi trabajo ahora, si quieren puedo enviar la solución a quien me contacte o la puedo postear mañana, es Domingo, no es día de trabajo Saludoz a todos.
__________________ ---------------------------------- APP Developer [email protected] ---------------------------------- |
| |||
execon .. si puedes mejor postea la solucion . .evita que este mensaje se convierta en un: "enviamela a mi" .. y "ami tambien" "seria mucha molestia que me lo enviaran?" .. y bla bla bla bla .. La verdad q si se usara el buscador de forosdelweb ... algo saldria sobre el tema .. Porque recuerdo q se hablo de lo mismo q aquí y se llegó a una solución .. Un saludo, |
| ||||
A prueba Pronto Saludos. Definitivamente Cluster estoy deacuerdo contigo. Este tema fue discutido hace tiempo, pero la solución me la perdi. De todas formas dentro de poco enviare un boletín a mis usuarios, y modificare las cabeceras según tu consejo. Posteare los resultados aquí mismo. Gracias |
| ||||
Yo dije que la solución la tenia, pero ayer era domingo y no trabajo los domingos, mucho menos en las tardes; tb. dije que podian pedirla o esperar a que yo la posteara hoy. Y aki está... echo "enviando"; $BaseUsr=mysql_connect("","",""); mysql_select_db("mallmirage",$BaseUsr); $SQLregistro=mysql_query("SELECT * FROM regusers",$BaseUsr); $mails_enviados=0; while ($Registro=mysql_fetch_array($SQLregistro)) { $Contacto_CorreoElectronico=$Registro["email"]; $NombreUser=$Registro["nombre"]; $Mensaje = " <html> <head> <title>Mall Mirage</title> <link rel=stylesheet href=http://www.mallmirage.cl/mallmirage-styles.css type=text/css> </head> <body bgcolor=#CCCCFF text=#000000 leftmargin=2 topmargin=2 marginwidth=2 marginheight=2 background=http://www.mallmirage.cl/images/logomall.gif link=#000066> Todo el Contenido html aki... </body></html> "; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $headers .= "From: Mall Mirage <[email protected]>\r\n"; $headers .= "Reply-To: [email protected]\r\n"; $headers .= "X-Mailer: PHP/" . phpversion(); if (mail($Contacto_CorreoElectronico, "Novedades Mall Mirage.", $Mensaje,$headers)) { $mails_enviados=$mails_enviados+1; } else { echo "algunas direcciones no recibieron el correo"; } } echo "Se enviaron ".$mails_enviados." mails a ".$mails_enviados." usuarios registrados."; envío correo a mails ingresados en una base de datos de usuarios registrados. Crfeo que el código está más que claro. Me funcionó correctamente para mails leidos con Outlook, yahoo, Hotmail, uebimiau (webmail). Que son las plataformas de correo donde me interesaba testear. Saludoz a todos,
__________________ ---------------------------------- APP Developer [email protected] ---------------------------------- |
| |||
Ok,execon .. Pero la pregunta es: ¿Has probado a enviar e-mail con esas cabeceras (sobre todo la de X-Mailer: con la version de PHP .. ) a una cuenta de correo Hotmail/yahoo .. ? llega? .. llega y es marcado como "spam" o correo masivo? .. Un saludo, |
| ||||
Es Marcado como correo masivo, llega como un correo común y silvestre, al menos a mi me llegaban asi, y a la gente que probó el sistema tb.
__________________ ---------------------------------- APP Developer [email protected] ---------------------------------- |
| |||
execon .. A eso me referia .. que si usas un X-mailer tipo MS Outlook o algun cliente de correo "conocido" .. pasaría tus mails como correo standar a traves de los filtros anti-spam de Hotmail y similares ... (edita las propiedades de un mail que generes con Outlook y mira su X-Mailer ..) Tambien "dicen" q establecer las prioridades (no recuerdo la cabecera . pero si editan cuanquier correo lo veran ) .. tambien ayuda a pasar esos "filtros anti-spam" mejor. Un saludo, |
| ||||
Ese problema lo resolvi yo agregando estas tres lineas al header... $sheaders=$sheaders."X-Priority: 1\r\n"; $sheaders=$sheaders."X-MSMail-Priority: High\r\n"; $sheaders=$sheaders."X-Mailer: Microsoft Outlook Express 6.00.2600.0000"; |
| ||||
Ok, ahora +1000 Saludos. Ahora la Execon una pregunta, qué pasa si en tu base de datos hay más de 100 emails?? Cómo mandas ese poco de emails en un sólo viaje? o por lo menos de 100 en 100 ?? Gracias
__________________ Aprender Siempre. Lema de Vida José Molina |
| ||||
Generé un script que hace eso, pero nunca lo probé para más de 50 correos, aunque se ejecutaba rápido, puede que al estar enviando más de 100 correos el sistema detecte que el script ha entrado en un ciclo infinito y mate dicho proceso. Cuando tenga un rato posteo el script que hace eso, en este momento estoy atareadisimo diseñando. Saludoz
__________________ ---------------------------------- APP Developer [email protected] ---------------------------------- |
| ||||
A ver si se puede Saludos. Lo que he pensado hacer es algo así: Levanto un pop-up que se encargará de enviar los emails. El query que me trae los emails a donde llegara la información, le colocaria algo así al final: ....LIMIT $INICIO, 50.... Comenzando con $INICIO = 0 Cuando termine de enviar esos 50 emails, mando a refrescar o recorgar el pop-up, pero ahora pasandole como variable extra $INICIO, donde quedaría: $INICIO = $INICIO + 50 De esta manera en la segunda recarga el query quedaría al final: ....LIMIT 50,50... Así iría enviando de 50 en 50, y me aseguraría que no existiera un "mate" del proceso por parte del servidor, ya que cada 50 emails estaría recargando la página... Qué les parece? Gracias
__________________ Aprender Siempre. Lema de Vida José Molina |
| |||
Usa mejor un blucle FOR que de saltos de 50 unidades desde 0 hasta el total de registros que te arroje tu consulta (= total de mails a enviar) ... anidado. Seria algo así: Código PHP: |
| ||||
Uf Qué bueno ver que el post sirvió a varios.....como yo soy un simple osado aprendiz autodidacta de php, no sé nada, aún, por suerte trabajo con un programador que tiene un sistema re bueno para estos envíos......no sé si me lo dé para compartirlo..... de todos modos.......ahí vemos.....;) |
| ||||
Yo voto y apelo a que la mejor alternativa es hacer un ciclo que vaya enviando mails por bloques, un while o un for que vaya de 50 en 50, por ejemplo, como dice nuestro amigo más arriba. Cuando yo hice ese script lo idee pensando en mandar muchos mails, pero en verdad nunca lo necesité, asike lo dejé de lado. Ya habrá un tiempo para revisarlo nuevamente y mejorarlo (o empeorarlo, que es lo más común que nos pase en primera instancia :-p :-p ). Un saludo a todos, esta discusión ya se puedo buena !!
__________________ ---------------------------------- APP Developer [email protected] ---------------------------------- |
| ||||
Pero el tiempo ??? Saludos. Cluster tu idea esta bien, es sin duda lo que primero pense, pero y que tal con el tiempo que se tardará en enviar 3000 emails ??? Todos dentro de un for y un while??? O fue que no entendí bien el código ??? Es decir, el "for" le indica de cuanto en cuanto hara el envio .. Y el "while" es para recorrer la consulta.... Pero igual ese "for" no tendrá que esperar a que llegue al TOTAL de registros traidos por la consulta? Entonces donde coloco algo para que el server no crea que se ha entrado en un "Ciclo Infinito" como lo comento Execon en post anteriores?... Gracias
__________________ Aprender Siempre. Lema de Vida José Molina |
| ||||
En una de las respuestas anteriores sale algo como esto: $query = mysql_query("..... LIMIT $inicio",....) en esta cadena estás especificando de cuántos mails van a salir de una vez, ahora, en el for puede que te tome un tiempo en hacerlo, yo probé mi script con 5 mails, demoraba sólo un corto tiempo, creo ke menos de un segundo. Ahora, depende de como esté construido el código y de lo rápido que el servidor procese .... Saludoz
__________________ ---------------------------------- APP Developer [email protected] ---------------------------------- |
| |||
El "for" q te puse .. solo te entrega: 0 50 100 150 .. hasta el total de registros de tu tabla de e-mails a su vez anidado .. se ejecuta la consulta desde el registro $inicio hasta 50 registors mas adelante ($inicio+50) ... El bucle ese nunca va entrar en un bucle infinito .. Puede domorarse mucho sí, dependiendo de cuantos e-mails tengas ... Pero .. al fin y al cabo, esa solución es lo mismo q enviarle de golpe los 3000 mails . .si no ejecutas un bucle de espera o un sleep() para "retardar" la ejecución del bucle (for seria) y el servidor de e-amil "se tome un respiro" ... Bueno .. a todo esto .. usar la funcion mail() y sedmail (repito palabras de Webestudio) no es lo ideal para una gran cantidad de e-mail .. lo Ideal es usar conexion directa a tu SMTP (por soket() )q uses y enviarselo todo .. . aquí esta el tema: http://www.forosdelweb.com/showthrea...hreadid=104071 Un saludo, Última edición por Cluster; 06/12/2002 a las 23:46 |
| ||||
Santos Bucles !!! Saludos. Caramba, la cosa se puso peluda. jejejejeje Empiezo a creer que es mejor usar los NewsList que traen los servidores o servicios de hosting pagos. Caramba que proceso para enviar la "Manada de emails" como lo califico Cluster en post anteriores a este....jejejeje La verdad es que de eso se trata. Bueno, yo por mi parte tratare de bajar la class de herminio (hasta ahora me ha dado error el link) y ver si puedo utilizarla como quiero. Por otra parte le agradezco a todos los que han participado y dado sus ideas. Suerte
__________________ Aprender Siempre. Lema de Vida José Molina |