Introducción a PHPMailer

  • 17/02/2007
  • 2:14 am
  • unijimpe

PHPMailer es una clase escrita en PHP que facilita el envío de correo, añadiendo facilidad en el envío de correos con adjuntos, en formato HTML y con diferentes codificaciones, soporte para imagenes embebidas, headers personalizados y además funciona con múltiples servidores de correo.

phpmailer.png

Típicamente para el envío de correo con PHP se utiliza la función mail(), pero esta función tiene varias limitaciones, por ejemplo que no soporta el envío de adjuntos. Entonces PHPMailer nos viene a facilitar este trabajo que de otra forma seria muy engorroso. Viene con un conjunto de métodos que nos ayudarán en el envió de emails.

Empezando

El primer paso es descargar PHPMailer, aquí encontraremos dos archivos: class.phpmailer.php el cual contiene las funciones para el envío de correo y class.smtp.php para enviar correo mediante servidores SMTP.

Creamos un nuevo documento PHP en donde incluimos la clase y luego creamos una instancia de la clase para utilizarla mas adelante.

PHP:
  1. <?php
  2. require("class.phpmailer.php");
  3. $mail = new PHPMailer();
  4. ?>

Propiedades del Mensaje

El siguiente paso es asignar las propiedades del correo que vamos a enviar como el servidor de correo, subject y From. Luego con el método AddAddress asignamos a quien o quienes vamos a enviar el correo, también se puede utilizar AddCC y AddBCC para las copias y copias ocultas:

PHP:
  1. $mail->Host = "localhost";
  2. $mail->From = "remite@email.com";
  3. $mail->FromName = "Nombre del Remitente";
  4. $mail->Subject = "Subject del correo";
  5. $mail->AddAddress("destino1@correo.com","Nombre 01");
  6. $mail->AddAddress("destino2@correo.com","Nombre 02");
  7. $mail->AddCC("usuariocopia@correo.com");
  8. $mail->AddBCC("usuariocopiaoculta@correo.com");

Cuerpo del Mensaje

Hasta aquí hemos utilizado las funciones básicas de correo, pero ahora viene la parte del cuerpo del mensaje. Podemos enviar correo en formato HTML e incluso definir un texto que se mostrará si es que el lector de correo no soporta HTML.

PHP:
  1. $body  = "Hola <strong>amigo</strong><br>";
  2. $body .= "probando <i>PHPMailer<i>.<br><br>";
  3. $body .= "<font color='red'>Saludos</font>";
  4. $mail->Body = $body;
  5. $mail->AltBody = "Hola amigo\nprobando PHPMailer\n\nSaludos";

Agregar Archivos Adjuntos

Ahora si deseamos añadir un archivo adjunto a nuestro mensaje utilizamos el método AddAttachment el cual recibe dos parámetros, el primero es la ruta del archivo que vamos a incluir y el segundo es el nombre que se va a mostrar en el correo para este archivo.

PHP:
  1. $mail->AddAttachment("images/foto.jpg", "foto.jpg");
  2. $mail->AddAttachment("files/demo.zip", "demo.zip");

Finalizando

Finalmente el envío del correo se hace con la función send(). Entonces uniendo todas las partes de nuestro código tenemos:

PHP:
  1. require("class.phpmailer.php");
  2. $mail = new PHPMailer();
  3. $mail->Host = "localhost";
  4.  
  5. $mail->From = "remite@email.com";
  6. $mail->FromName = "Nombre del Remitente";
  7. $mail->Subject = "Subject del correo";
  8. $mail->AddAddress("destino1@correo.com","Nombre 01");
  9. $mail->AddAddress("destino2@correo.com","Nombre 02");
  10. $mail->AddCC("usuariocopia@correo.com");
  11. $mail->AddBCC("usuariocopiaoculta@correo.com");
  12.  
  13. $body  = "Hola <strong>amigo</strong><br>";
  14. $body .= "probando <i>PHPMailer<i>.<br><br>";
  15. $body .= "<font color='red'>Saludos</font>";
  16. $mail->Body = $body;
  17. $mail->AltBody = "Hola amigo\nprobando PHPMailer\n\nSaludos";
  18. $mail->AddAttachment("images/foto.jpg", "foto.jpg");
  19. $mail->AddAttachment("files/demo.zip", "demo.zip");
  20. $mail->Send();

Si probamos este mensaje obtendremos el siguiente resultado en nuestra cuenta de correo en el cual notamos el mensaje en HTML y los archivos adjuntos.

php-mailer.gif

Desde luego que hemos utilizado solo las funciones básicas, hay muchas más opciones con las cuales se puede personalizar completamente el mensaje que enviamos, puedes encontrar un referencia de estas opciones en: http://phpmailer.sourceforge.net/docs/. Finalmente les dejo los archivos de este ejemplo funcionando para que lo prueben.

Posts Relacionados

Total de Comentarios: 88

Publicidad
Luis G
27/02/2007
9:05 am

Hola, te agradezco mucho la info. Estoy usando un script muuuy parecido a este y me funciona perfectamente. Sin embargo lo que me gustaria es que los usuarios de mi pagina puedan enviarme sus mensajes (en realidad algo asi como este cuadro donde estoy escribiendo, solo que enviando mi comentario a un email fijo).
Estoy intentando varias cosas, como usando $_POST[’texto’] en el $body, etc. Pero no consigo nada. Ademas, la opcion mail() esta desactivada por el servidor, asi que no se que mas opciones tengo.

Agradeceria infinitamente si me puedes/podeis ayudar

28/02/2007
6:53 pm

Para ello puedes leer http://blog.unijimpe.net/enviar-e-mail-con-php/ donde se explica como crear el formulario y enviar el correo. Ahora si esta deshabilitada la función mail(), es por que no tienes un servidor de correo. Para ello utiliza PHPMailer en donde puedes colocar que servidor de correo hará el envío.

ellioh
09/03/2007
11:16 pm

hola que tal, quisiera saber como enviar email a correos corporativos. lo que pasa es que estoy realizand una web que requiere el envio de mensajes a empresas q cuentan con webmail corporativos y al usar la funcion mail no puede envia r a estos correos. además quisiera saber si el php se puede conectar con el webmail para envio de email
Gracias pot todo, tus toturiales son de gran ayuda.
Agradecere tu ayuda

JO
14/03/2007
4:33 pm

Solo quisiera saber.. si de esto puede resultar un ciclo donde se envie un mail tantas veces uno quiera…¿Usted que cree?..

Gracias de Ante mano….

15/03/2007
12:19 am

Si claro que se puede, para ello debes crear un bucle y llamas a la función $mail->Send(); con lo cual se hará el envío repetidas veces. Ahora esto no es recomendable pues si envías demasiadas veces correo te pueden bloquear como si fueras spam.

29/03/2007
6:58 am

Hola, quisiera saber, que debo poner en localhost?, o debo dejarlo asi como esta?…

Daniel
29/03/2007
6:23 pm

agradezco toda la ayuda y todo lo he hecho pero mi pregunta es como obtengo los datos de un formulario para el envio ya que todo lo que escribo en html sale igual en el correo y yo quiero es recopilar los datos del usuario. Gracias por la ayuda

31/03/2007
11:08 am

luis14al, localhost es el nombre de tu servidor SMTP, es decir si tu servidor esta en la misma maquina que PHP puedes dejarlo como localhost, de lo contrario si esta en otra maquina puedes poner el nombre de dominio o el IP de la maquina donde esta el servidor SMTP.

31/03/2007
11:10 am

Daniel en tu caso antes de hacer el envío de los datos por correo, puedes colocar una sentencia SQL en el cual guardas los datos ingresados en una Base de Datos, con esto lograrás almacenar esta información que tu necesitas.

gambit
30/04/2007
1:39 pm

si uso mail() en un bucle para enviar correo, algunos no llegan, por qué y que puedo hacer en vez de eso?
Es qeu necesito que a cada destinatario le llegue el correo con unos datos que se obtienen en el bucle.
Gracias

10/05/2007
7:35 pm

Hola, tengo mi hosting con GoDaddy, pero no se si me permiten hacer uso de alguno servidor de correo, SMTP o algo parecido. Podrian ayudarme?

Gracias.

Hernan
17/05/2007
5:07 pm

Hola, me gustaria saber por que cuando corri el script me sale una pantalla en blanco y no envia nada, hice todos los pasos que estan en las indicaciones , sera que tengo que configurar algo, cambiara algun dato mas o tener instalado algo en mi maquina

17/05/2007
10:05 pm

Para hacer el envío de correo necesitas conectarte a un servidor SMTP, si esta instalado en tu maquina o hosting lo puedes llamar:

$mail->Host = “localhost”;

Ahora si el servidor de correo esta en otro dominio puedes cambiar esta línea y colocar la dirección de tu SMTP:

$mail->Host = “mail.midominio.com”;

Hernan
18/05/2007
8:37 am

Hola unijimpe, Me gustaria que me ayudara un poco mas con esto, ya que no soy experto en el tema de servidores de correo, que servidor de correo me recomendaria, ya que para aplicar el ejemplo en mi maquina, que configuracion tengo que hacerle al servidor de correo para que em funcione correctamente el ejemplo, en fin deme tada la explicacion necesaria para poner en marcha ete ejemplo, por ultimo me quiero saber si usted maneja puerto serial en PHP, le `pido disculpas por tanta molestia, pero me urge ya que es para mi proyecto de tesis, gracias…….

18/05/2007
9:09 am

Lamentablemente yo no he manejado el puerto serial, ahora si necesitas un servidor de correo local puedes utilizar Imail Server, el cual incluye un servidor de correo SMTP, descarga la versión trial y lo instalas como si fuera un programa cualquiera.

Hernan
18/05/2007
4:12 pm

El Imail Server es igual que el hMailServer, si es igual me puede ayudar a configurarlo, es que no soy muy bueno en esto… Gracias

19/05/2007
3:47 pm

hola
que hago si el hosting que adquiri no tiene instalado el PHPMAILER, hay alguna forma de instalarlo?

19/05/2007
9:44 pm

PHPmailer no viene instalado ni necesita instalación, lo que se necesita es un servidor de correo SMTP, esto es si tienes un hosting con dominio misitio.com, típicamente tu servidor SMTP esta en mail.misitio.com, otra forma de acceder a tu servidor smtp es colocando localhost.

07/06/2007
9:36 pm

unijimpe, gracias!

te queria consultar lo siguiente:

la idea es q el usuario pueda llenar 1 formulario y adjuntar su CV.

q deberia poner en esta linea entonces para hacer eso?
#
$mail->AddAttachment(”images/foto.jpg”, “foto.jpg”);

y en el HTML ?

gracias saludos!!

John Arrieta
08/06/2007
4:21 am

Viejo esto no funciona, ya lo he probado mas una docena de veces de no genera error si le cambio el servidor de correo, tampoco si una direccion o servidor de correo destino no existen, y para hacer mas chistosa la cosa, los correos nunca llegan.
Conclucion no sirve y me quedo con la funcion mail de php

Marco
17/07/2007
6:17 pm

Si funka pero ahi alguien ke tenga o sepa de un programa para tener tu correo en localhost???
ke me diga porfa
xxmarcopolo06xx@gmail.com
Graciaz

Kari
18/07/2007
3:01 am

¿Puedo agregar un for dentro del texto del correo? ¿como?

19/07/2007
8:14 am

Marco, una programa de servidor de correo SMTP es por ejemplo Imail Server, puedes descargar la versión de prueba y verás que funciona a la perfección para enviar correos desde el localhost.

Kari, lo que debes hacer es crear una variable en donde guardas tu texto, con esta variable puedes hacer for, if, while y cualquier sentencia que desees, al final esta variable se la pasas a $mail->Body para que lo puedas enviar.

JuanAn
23/07/2007
5:21 pm

Hola Unijimpe!

Enhorabuena por tu blog. Descubrí la clase phpmailer tiempo atrás y funciona perfectamente.

Ahora buscando información sobre esta clase he encontrador tu blog. Tengo un pequeño problemilla.Te comento: Uso la clase en un servidor propio y funciona, pero alguna vez cuando la uso manda correos repetidos, es decir, entrega al destinario varias copias del mismo e-mail, con lo que el correo lo detecta como SPAM. Os ha pasado? Como puedo solucionarlo? Es importante ya que mando correos corporativos a los clientes de la empresa donde trabajo y no es nada bueno que les envie siempre varias copias del mismo.

PD: Passa sobretodo con cuentas hotmail, gmail, yahoo.

hugo lepe s.
25/07/2007
1:58 am

Hola, disculpa por la consulta soy novato en el tema, pero necesito saber como y donde se instalan los archivos class.phpmailer.php y class.smtp.php.

Gracias por su ayuda.

25/07/2007
8:51 am

JuanAn, la verdad a mi siempre me ha funcionado de maravillas, puede ocurrir que en tu código este duplicado la dirección del destinantario por lo cual envía dos veces.

Hugo lepe, los archivos debes colocarlo en la misma carpeta donde se ubica el archivo que utilizarás para hacer el envío.

JuanAn
25/07/2007
2:49 pm

Hola de nuevo,

En el código no estan las direcciones repetidas. Me parece que el problema es de nuestro servidor de correo, ya que he probado con otro y funciona.

Ahora el único problema es que en cuentas de correo de hotmail, yahoo y gmail.

Un saludo y gracias,

Christian
31/07/2007
2:39 am

Hola…muy interesante el tema.
Lo que yo ando buscando es un formulario donde mis visitantes puedan atachar fotos y los envien directamente desde mi página y que llegue a mi mail particular.¿se puede hacer con esto? cómo sería?
Graciasss

31/07/2007
10:49 am

[...] La presente es una breve guía para implementar un formulario para enviar email con archivos adjuntos, para ello utilizaremos la librería PHPMailer, de la cual ya hemos hablado en Introducción a PHPMailer. [...]

31/07/2007
8:30 pm

A mi no me funciona :S
Tengo de servidor localhost y no me funciona.

Davinia
02/08/2007
4:31 pm

Hola, uso la librería PhpMailer para enviar correos desde una web. Funciona perfectamente excepto con correos hotmail y yahoo, osea, a estas cuentas nunca llegan los correos… he intentado solucionarlo cambiando algunos parámetros como el HeaderLine poniendo $this->HeaderLine(”X-Mailer”,”Microsoft Outlook, Build 10.0.2616″); o el $SMTPAuth a true, pero no hay manera.
Gracias de antemano.

09/08/2007
3:23 pm

Buenas uso esta clase desde hace tiempo la verdad, en muchas de mis paginas, pero me ocurre algo muy curioso.

Tengo varios servidores y en cada servidor varios dominios,cada uno con su propio servidor de correo.

Inicialmente use un dominio, pero me di cuenta que no envía correos a dominios que estén registrado en el mismo servidor, sin embargo envía perfectamente a cuentas que no sean del mismo servidor (entre ellas hotmail, yahoo, google, etc).

Así que probé diciéndole que enviase desde el otro servidor, y tachan me hace justamente todo lo contrario, me envía a correos que estén alojados en ese servidor, pero no a correos que estén alojados en servidor.

Se te ocurre alguna explicación, para este fenómeno extraño?

zakaria
03/09/2007
8:54 pm

hola,acabo de instalar el phpmailer y no me funciona ,no se que poner en el host,lo he instalado en easyphp,¿deberia poner el localhost del apache del easyphp o el host del smtp que me he bajado?lo que pasa que no se donde conseguir ese host.por favor ayudeme.
muchas gracias

gabriel
05/09/2007
8:06 am

hola. no enteindo como esto funciona. quien crea el archivo mailphp.php?? me puedes explicar. en mi caso debo comunicar hacia unn SMTP ya que el servidor del sitio no es el servidor de correo.

gabriel herrera
05/09/2007
8:31 am

que tantos parametros debo modificar y en que archivo…

si alguien puede explicar que y como modifica y como un desde el formulario se llega finalmente a enviar el correo ??

gracias de nuevo.

05/09/2007
9:18 am

EasyPHP es un instalador para tener Apache, PHP y MySQL pero no tiene incluido un servidor SMTP, ojo necesitas un servidor SMTP, si lo instalas en tu maquina local entonces $mail->Host debe ser “localhost“, en caso que este en otro lugar, deber poner la dirección por ejemplo “mail.mihost.com“.

Respecto a modificar, descarguen los archivos de ejemplo y cambien solo la dirección de $mail->AddAddress que debe contener la dirección a donde debe llegar el mail, en este caso la cuenta de correo de ustedes.

Christian
08/09/2007
2:50 am

Hola amigos, tengo el siguiente problema al intentar envar mails:

Warning: fputs(): supplied argument is not a valid stream resource in /usr/local/apache2/htdocs/gos/desarrollo2/includes/class.smtp.php on line 128

Esto no ocurre siempre pero cuando ocurre no envia mail.

Gracias de Antemano

Johann
10/09/2007
9:53 pm

Hola Unijimpe, tengo un hosting service habilitado para php , yo sigo las instrucciones pero lo que no entiendo es si alog hay que programar en el mismisimo hosting para que funcione, podrias por favor dar un ejemplo de donde colocar los archivos en un hosting service yo uso plataforma linux hago todo, no me bota errores pero no envia nada no se que faltara anadir o configurar

ARCO
11/09/2007
12:02 pm

talvez no tengas activada la funcion mail()

KaRuRoSu
27/09/2007
7:18 am

Muchas Gracias por este ‘peacho manual’. Me ha sido de gran ayuda.

chicogreenday
30/09/2007
3:17 am

hola no encuentro un hosting con stm no saben si hay uno gratuitot cualquier cosa me mandan un mail plis car_680@hotmail.com peroq ue ela dmonistrador pueda ayudarme

Jgucani
04/10/2007
10:39 pm

Hola. Ya hice el montaje y no devuelve nada ni llegan los email. Como valido si hubo errores en el proceso de envío ?
Gracias !

Jgucani
09/10/2007
3:25 am

Holas. Corrijo el mensaje anterior. Ya me funciona ok la función, aunque le hice un pequeño ajuste. No me funciona local desde mi pc, sino que tuve que colocarlo en un host en la web.

mariano
16/10/2007
9:29 pm

Hola
como se pueden mostrar imagenes en el body?

oidacra
20/10/2007
6:16 am

Excelente…. mejor se daña…

CARLES
25/10/2007
2:03 am

hola, he estado probando el phpmailer, pero no se como se ejecuta un script php, ¿se necesita algun programa?

hice todo lo que se dice, pero al ejecutar el script, no sale nada. Lo ejecuto desde la barra de direcciones del navegador: http://www.servidor.es/test.php

pero no ocurre nada de nada,
¿que me falta?

25/10/2007
9:37 am

Para ejecutar scripts php, necesitas tener instalado PHP. Generalmente todos los servicios de hosting actuales ya tienen soporte para PHP. Ahora si lo que deseas es instalar PHP en tu PC puedes leer Instalar Apache y PHP en WinXP.

CARLES
25/10/2007
6:37 pm

hola unijimpe, gracias por la respuesta.

Instale apache 2.0.59 y php 4.4.7 en mi pc correctamente, y me puse a probar el phpmailer, pero he fracasado.

Tengo un servidor smtp remoto, y puse el host: smtp.servidor.es, a la hora de enviar el mail me aparece el siguiente mensaje:

Message was not sent.Mailer error: SMTP Error: The following recipients failed: fulanito@mail.es, …

tambien probe de poner como host: mail.servidor.es, pero da error:

Warning: fsockopen() [function.fsockopen]: unable to connect to mail.servidor.es:25 in C:\Archivos de programa\Apache Group\Apache2\htdocs\phpmailer\class.smtp.php on line 105
Message was not sent.Mailer error: SMTP Error: Could not connect to SMTP host.

En fin, me gustaria saber como configurar el phpmailer para ejecutarlo desde mi computadora pero con un servidor de smtp remoto, ya que tambien prove de subir los archivos al servidor remoto y ejecutarlos desde alli pero sin resultado, me aparecia el codigo php escrito como texto plano en el navegador, supongo que esto es debido a que mi servidor no tiene instalado php (es asi?)

muchas gracias unijimpe

CARLES
25/10/2007
8:58 pm

perdon,

ya lo solucione, el problema estaba en que mi servidor smtp necesita autentificacion, para quien le pase lo mismo, añadir:

$mail->Mailer = “smtp”;
$mail->Host = “smtp.dominio.es”;
$mail->SMTPAuth = true;
$mail->Username = “usuario”;
$mail->Password = “contraseña”;

gracias de todas formas, aprovecho para preguntar cuales son los servidores en los que no se necesita autentificacion.

una ultima cosa, alguna guia de como añadir codigo html? he intentado poner un par de tablas con una imagen y texto pero no me funciona.

muchisimas gracias!

01/11/2007
12:29 am

cuando agrego las lineas me sale error
Notice: Use of undefined constant “smtp” - assumed ‘“smtp”’ in c:\archivos de programa\apache group\apache2\htdocs\conect3.php on line 4

en mi compañia hay servidor de smpt o ESMTP no se kual sea la diferencia, y he modificado todas las variables con el servidor y todas esas cosas y no me llega nada a mi correo…

saludos.

01/11/2007
12:40 am

oooo ya vi porque ciudado compañeros observen ke al kopiar el kodigo las comillas son ” y deben de ser “…. supongo es porque se copia el tipo de codificacion del html y debe de ser UTF-8

saludos

05/11/2007
8:45 pm

y para enviar-lo desde flash??como se cargan las variables, igual??

Roberto Ivan
07/11/2007
11:48 pm

Hola amigos tengo configurado igual

$website=”www.dominio.com”;
$subject=”Comentarios”;
$sendto=”ivan_19julio@yahoo.com”;
$fromname=”comentarios”;
$from=”webmaster@dominio.com”;

El formulario dice que el correo fue enviado pero no me llega nada

Saludos

ommaba
19/11/2007
1:36 am

en vez de colocar todos los destinatarios
#
$mail->AddAddress(”destino1@correo.com”,”Nombre 01″);
#
$mail->AddAddress(”destino1@correo.com”,”Nombre 01″);
#
$mail->AddAddress(”destino2@correo.com”,”Nombre 02″);
……………..
………………
#
$mail->AddAddress(”destinon@correo.com”,”Nombre n”);

como se hace para que se conecte a una bd y envie a los n destinatarios??

Jairo
25/11/2007
8:56 pm

Hola quisiera que por favor me explicaras como utilizar el PHPmailer ya que me gustaria utlizar como smtp el de GMAIL. Gracias.

Utlizo WampServer como Servidor local.

25/11/2007
10:04 pm

Jairo, para ello necesitas hacer uso de autentificación. Puedes encontrar mas detalles de como hacerlo en:
http://www.buayacorp.com/archivos/phpmailer-con-gmail/

JACASS
04/12/2007
12:28 pm

Alguien podria postear un zip con todo el formulario y clase,,que yo tengo todo en mi servidor pero no funka..
gracias..

20/01/2008
8:00 am

Hola, antes de nada agradecerte la ayuda que prestas a todos.
Yo ya uso phphmailer, sin tener smtp, con una cuenta gmail como se explica en
http://www.buayacorp.com/archivos/phpmailer-con-gmail/
Envio perfectamente (salvo a algunos dominios que deben detectarme como spam), ahora bien por mas que he buscado en los doc de la clase y en internet no he conseguido saber como hacer para en lugar de crear un nuevo mail responder a uno ya existente.
Supongo que sera cuestion de usar el mismo uid, pero no se como.
¿tienes idea de por donde puedo meterle mano?

dblanco
22/01/2008
7:30 pm

tengo dos preguntas:

1º) si enviamos correo masivo en un bucle no puede ser que se sobrepase el tiempo de espera y deje de funcionar la página? qué solución habría?

2º) existe opción de enviar Body en HTML y AltBody tipo TXT, ok. Pero y si sólo queremos enviar en TXT y obviar el HTML?

gracias

22/01/2008
9:36 pm

Hola dblanco, respecto a tus preguntas:

Para evitar que se sobrepase el tiempo de ejecución puedes editar tu archivo php.ini y cambiar la propiedad max_execution_time. La segunda posibilidad es colocar set_time_limit(0) al inicio de tu página. Puedes encontrar mas información en: http://www.php.net/set_time_limit

En el segundo caso solo colocar contenido a la propiedad AltBody y funcionará sin problemas.

jose
29/01/2008
10:41 am

yo tengo un problemilla:
estoy utilizando phpmailer y en el Body inserto todo el código html de la siguiente forma:

$mail2->Body = ”

/* PAGINA*/
body {

(…) TODO EL CSS NECESARIO

(…) EL CORREO

“;

el problema es que todo el estilo css se aplica y se ve correctamente en el outlook, por ejemplo, pero no se ve en gmail/hotmail/…

En un principio el css lo puse linkado:

pero no funcionaba.

¿alguién ha tenido un problema similar?

¿alguién me puede ayudar a que se vea también en gmail/hotmail?

muchas gracias a todos.

jose
29/01/2008
10:43 am

yo tengo un problemilla:
estoy utilizando phpmailer y en el Body inserto todo el código html de la siguiente forma:

$mail2->Body = ”
html>
head>
style type=’text/css’>
/* PAGINA*/
body {

(…) TODO EL CSS NECESARIO

/style>
/head>
body>
div id=’page’>

(…) EL CORREO

/div>
/body>
/html>
“;

el problema es que todo el estilo css se aplica y se ve correctamente en el outlook, por ejemplo, pero no se ve en gmail/hotmail/…

En un principio el css lo puse linkado:

link rel=’stylesheet’ href=’http://www.dominio.com/css/style.css’ type=’text/css’ media=’screen’

pero no funcionaba.

¿alguién ha tenido un problema similar?

¿alguién me puede ayudar a que se vea también en gmail/hotmail?

muchas gracias a todos.

jhon key
31/01/2008
4:40 pm

jose. si vas a insertar html en una variables hazlo con las comillas simples ejemplo:

print $texto=’

datos
ejemplo

‘;

sino mira como genera este editor el codigo html para enviarlo en el body de un mensaje :

http://www.zapatec.com/website/main/products/editor/demo.jsp#full_editor.html

haz click donde dice html , y veras como genera el codigo.

06/02/2008
12:28 pm

Hola.

Tengo una duda que no soy capaz de resolver.

tengo este codigo:

require(”class.phpmailer.php”);
$mail = new PHPMailer();
$mail->Host = “mail.copycenterdigital.com”;
$mail->From = “comercial@copycenterdigital.com”;
$mail->FromName = “Nombre del Remitente”;
$mail->Subject = “Subject del correo”;
$mail->AddAddress(”copycenter@copycenterdigital.com”,”Tu nombre”);

$body = “Hola amigo“;
$body .= “probando PHPMailer.”;
$body .= “Saludos”;
$mail->Body = $body;
$mail->Timeout=30;
$mail->AltBody = “Hola amigo\nprobando PHPMailer\n\nSaludos”;
$mail->AddAttachment(”images/foto.jpg”, “foto.jpg”);
$mail->AddAttachment(”files/demo.zip”, “demo.zip”);

if ($mail->Send())
{
echo “mail enviado”;
} else
{
echo “fallo en el envio”;
}

De esta forma si el correo se enviara correctamente saldria mail enviado.

Pero no sale ni una sola vez
Ademas no envia el correo claro.

El servidor SMTP es como indicabas aunque no se si es correcto. Los archivos estan en mi pc y los proceso mediante el servidor apache que instala wamp, pero como digo, nunca sale bien.

Ya he probado muchas cosas y nada me funciona.

Necesito ayuda por que esto me costar un dolor.

Muchas gracias.

23/02/2008
11:09 pm

bueno acabo de encontrar este mensaje y tratare de implementarlo aunque a decir verdad dificil lo veo.

para mi esto es japones.

gracias y ya les comento como me ha resultado

04/03/2008
5:45 pm

hola he usado esta funcion para envio de mail y funciona a las mil maravillas.
pero tengo que enviar este mail dos veces a la empresa con el remitente del nombre del cliente y al cliente con el remitente del mail de la empresa
como puedo hacer esto???
usando la misma funcion de arriba?
gracias

Rodrigo Inostroza
07/03/2008
9:20 am

Estoy haciendo el codigo… me envia el mail pero no me adjunta los archivos… un solucion por favor. este es el codigo:

Host=”localhost”;
$mail->AddAddress(”roinostroza@hotmail.com”, “Rodrigo Inostroza”);
$mail->Subject = “Formulario Solicitud Gráfica”;
$mail->Body = “Enviado Por “.$_POST['nombre'].” para la Empresa “.$_POST['cliente'];
$mail->AddAttachment(’home/keyadmin/public_html/formulario/formulario.pdf’, “formulario de “.$_POST['nombre'].”.pdf”);

if(!$mail->Send())
{
echo “Error en el envio del email”;
exit;
}
echo “El Mensaje se envió correctamente”;
?>

me sale repetidas veces que se envió correctamente pero no adjunta el archivo.

sol
20/04/2008
12:12 pm

Hola unijimpe, ya descarge PHPMailer, pero soy una ignorante con todo lo que he leido y necesito ayuda pasito a pasito, por favor ayudame es muy importante para mi lograr enviar e-mail masivos, va a ser la base de sustento para toda mi familia. gracias por compartir tus conocimientos.

15/05/2008
5:03 pm

realmente como puede haber gente tan bestia y necia, que intentan hacer cosas mas avanzadas en php sin siquiera saber usar el echo; realmente es indignante ver gente tan animal. que no saben ni lo que van a hacer y encima se enojan al ver que no les sale..si quieres aprender php metanse a un curso.. o si no imprimanse esto…

$acum=1;
while($acum>1000){
echo “vayanse al carajo”;$acum++;}

harold lazo
16/05/2008
8:41 am

Hola, y si quiero que en ese mail que voy a enviar salga de encabezado una imagen, como haría? no un dato adjunto si no una imagen que salga con el mensaje, gracias

marcela
06/06/2008
9:46 am

ola no olviden habilitar la extension openssl en php si estan en wamp es mas facil

Edixson
12/06/2008
1:17 pm

Javier eres un perfecto idiota, quien te crees q eres para ofender a los demas, sino kieres ayudar simplemente no te metas. Por cierto se nota q haz practicado mucho esa funcion xD…

Elena
13/06/2008
5:39 am

Mi duda es como poder insertar el Css de la página a enviar para que lo reconozcan tanto gmail como hotmail. He probado tanto insertar directamente en la cabecera los estilos como con enlace al archivo Css pero no lo reconoce.
Agradecería si pudieraís solucionarme el problema. Gracias.

23/06/2008
12:37 am

[...] la necesidad de enviar email a una lista de correo, esto lo podemos hacer utilizando la librería PHPMailer el cual nos permite enviar emails con algunas opciones avanzadas para este tipo de [...]

26/06/2008
11:56 am

Buenas, estoy probando esta función ya que necesito hacer una prueba para la universidad de un formulario que envíe un archivo adjunto a una dirección de correo. Hasta lo que he visto lo puedo hacer el problema esta en que no tengo el control del directorio donde corre PHP, y no hallo como instalar la función en la pag http://phpmailer.codeworxtech.com/install.html dice lo siguiente:

If you do not have control of the include directory and you are running PHP 4.0 or higher you can use this function to set it to the path of your files:

ini_set(”include_path”, “.:/path/to/phpmailer/dir”);

Or this:

$mail->PluginDir = “/path/to/phpmailer/dir”;

Lo que no comprendo es donde coloar esas rutas. ¿podría ayudarme?

24/07/2008
6:10 pm

[...] la necesidad de enviar email a una lista de correo, esto lo podemos hacer utilizando la librería PHPMailer el cual nos permite enviar emails con algunas opciones avanzadas para este tipo de [...]

agustin
01/08/2008
11:10 am

exelente ejemplo, pero tengo la duda de como hacer que en vez de adjuntar la imagen, esta aparezca en el encabezado del mensaje, la idea es poner un logo en el cuerpo del mensaje

03/08/2008
2:37 pm

[...] Introducción a PHP Mailer [...]

Mari
08/08/2008
12:19 pm

hola tengo un problema para enviar correos a hotmail,yahoo,gmail,etc. Supuestamente los correos si se estan enviando por que no me muestra ningun error de envio, el problema esta en que no llegan al destino, podrian decirme cual seria el motivo el por que no los envia, estoy utilizando las clases PHPMailer y SMTP.

ayundeme solo tengo una semana para resolverlo estoy en estadìas.
gracias.

si puedes ayudarme mi correo es
idem_abril@hotmail.com

Pedro
02/09/2008
10:07 am

Buenas!, muy buena la info… Pero ando necesitando algo mas… o sea, necesito poder manejar los mails rebotados..como para dejar una marca de a cuales clientes no les pude mandar el mail… Hay alguna solucion “magica” para esto???

Gracias

Roberto
04/09/2008
4:28 pm

Buenas!!, soi nuevo utilizando esta clase de PHPmailer, y no puedo mandar los correos, ya que no tengo mucho conocimiento de eso de SMTP tengo este codigo:

require(”class.phpmailer.php”);
$mail = new PHPMailer();
$mail->Host = “guanajuato.gob.mx”;
$mail->From = “jreynoso@guanajuato.gob.mx”;
$mail->FromName = “Neri”;
$mail->Subject = “Prueba”;
$mail->AddAddress(”rc.rodriguez.f@linuxmail.org”,”Carlos”);

$body = “Hola amigo“;
$body .= “probando PHPMailer.”;
$body .= “Saludos”;
$mail->Body = $body;
$mail->AltBody = “Hola amigo\nprobando PHPMailer\n\nSaludos”;
$mail->AddAttachment(”images/foto.jpg”, “foto.jpg”);
$mail->AddAttachment(”files/demo.zip”, “demo.zip”);
$mail->Send();

aver si m pueden ayudar

07/09/2008
10:29 am

[...] PHPMailer es una librería que nos permite enviar emails con algunas opciones avanzadas para este tipo de labores. [...]

Obelix
17/09/2008
5:32 pm

Buenas!!! Ando con un problemita, quisiera ver si me pueden ayduar…
Tengo esta libreria funcionando correctamente, y estoy usando una cuenta de gmail… tengo una aplicacion donde debo enviarles informacion a todos mis clientes… por lo tanto, puedo llegar a mandar cerca de 1000 mails (de a uno, ya que son personalizados)…. pero despues de los 400 o 500 mails (que van llegando bien) me tira este mensaje:
Mailer Error: Language string failed to load: data_not_accepted
en TODOS los mails.. o sea, que no envia ninguno mas…

Me da la sensacion de que Gmail es quien me bloquea, pero no estoy segurro de ello… por otro lado, quize configurar un servidor SMTP local, pero me es imposible configurar el DNS, por lo que el mail llega al servidor, pero nunca sale de ahi….

Alguien me puede dar una mano??? Grax!

Obelix
17/09/2008
6:10 pm

Efectivamente…. Gmail me bloqueo la cuenta por 24 horas, por excederme…

Pero sigo sin poder resolver el tema del DNS para el servidor local de SMTP

17/09/2008
8:08 pm

Obelix, según parece Gmail te ha bloqueado por enviar muchos emails en tan poco tiempo, a eso se le llama spam. Por otra parte la solución a este problema es utilizar un servidor SMTP de forma local, para lo cual no necesitas configurar ningún DNS, solo se configura DNS cuando quieres que mediante una dirección en Internet accedan a tu maquina local, lo cual no es tu caso.

Obelix
17/09/2008
11:05 pm

Gracias por la respuesta… lo de Gmail era “una prueba”… tenia que medir cual era el limite… y lo encontre…

Con respecto al servidor SMTP… no se que onda.. debo ser medio manko… instale ya varios y no hay caso… el mail entra la servidor… lo veo en la cola de mensajes, pero de ahi no sale… No se como solucionarlo eso…

Saludos

PhantomDark
23/09/2008
1:00 pm

Estoy viendo si me funciona pero parece que no

gn
24/09/2008
10:38 am

hola , quisiera saber si me pueden orientar para mandar mails con php
pero no con adjuntos, necesito que el html este incrustado en el cuerpo de mail , para que cuando se abra el mensaje se vea la imagen y el texto al mismo tiempo

Enviar Comentario

(*)

(*)