Enviar Email con PHP y Gmail

PHPMailer la estupenda librería de la cual hemos comentado en oportunidades anteriores se esta actualizando constantemente y entre las nuevas cualidades esta la posibilidad de enviar Email utilizando el servidor SMTP de Gmail, con lo cual resolvemos el problema de no tener un servidor SMTP para hacer los envíos.

Utilizando PHPMailer con Gmail
Debido a las actualizaciones que han hecho en PHPMailer algunos métodos han cambiado y se han agregado otros, entre los cuales se encuentran los métodos para utilizar Gmail en nuestros envíos.

Entonces primero descargamos los archivos fuente e incluimos los archivos class.phpmailer.php y class.smtp.php, para luego inicializar la clase, luego asignamos los datos del host y puerto de Gmail y adicionalmente colocamos nuestro usuario y clave de Gmail pues para hacer uso de este SMTP hace falta autentificación.

php
  1. include("class.phpmailer.php");
  2. include("class.smtp.php");
  3.  
  4. $mail = new PHPMailer();
  5. $mail->IsSMTP();
  6. $mail->SMTPAuth = true;
  7. $mail->SMTPSecure = "ssl";
  8. $mail->Host = "smtp.gmail.com";
  9. $mail->Port = 465;
  10. $mail->Username = "username@gmail.com";
  11. $mail->Password = "userpass";

Hasta este punto ya tenemos configurado nuestro script para utilizar el SMTP de Gmail, el siguiente paso es preparar y hacer el envío del email.

php
  1. $mail->From = "user@domain.com";
  2. $mail->FromName = "User Name";
  3. $mail->Subject = "Subject del Email";
  4. $mail->AltBody = "Hola, te doy mi nuevo numero\nxxxx.";
  5. $mail->MsgHTML("Hola, te doy mi nuevo numero<br><b>xxxx</b>.");
  6. $mail->AddAttachment("files/files.zip");
  7. $mail->AddAttachment("files/img03.jpg");
  8. $mail->AddAddress("destino@domain.com", "Destinatario");
  9. $mail->IsHTML(true);
  10.  
  11. if(!$mail->Send()) {
  12.   echo "Error: " . $mail->ErrorInfo;
  13. } else {
  14.   echo "Mensaje enviado correctamente";
  15. }

Nótese que en From podemos colocar la dirección email que deseamos se muestre y no necesariamente nuestra cuenta Gmail, en AltBody se envía el mensaje en texto plano y MsgHTML el mensaje en formato HTML. Adicionalmente y como prueba estamos adjuntando dos archivos, finalmente en el método AddAddress agregamos los datos del destinatario de nuestro email.

Conclusiones
Como pueden ver utilizar Gmail para el envío de nuestros email es muy sencillo, solo requiere unas lineas adicionales a nuestro script y obviamente una cuenta en Gmail la cual es gratuita.

Comentarios Total 88 comentarios


ximo
Publicado: 04/11/2008 10:35 am

Como puedo hacer para llamar al php desde htlm,gracias

joshep
Publicado: 04/11/2008 2:11 pm

buenas, esta muy buena la explicacion, pero falto agregar que como gmail utiliza SSL, por lo tanto hay que tener SSL instalado (para PHP es OpenSSL) y ademas configurarlo… (todavia estoy en eso)
saludos.

luman
Publicado: 05/11/2008 5:08 am

Tengo el problema de que siempre me coge de FROM la cuenta gmail en lugar de la que especifico en $mail->FROM. Alguna solución?

Judo-Boy
Publicado: 09/11/2008 7:06 pm

Y como seria para enviar mails con el Gmail For Your Domain.

mache
Publicado: 10/11/2008 7:05 am

a donde incluyo los binarios. tengo appserv.

el pollo
Publicado: 11/11/2008 2:49 pm

El problema es que los hosting te cobran a parte por instalarte openssl.
Y otra cosa que aun asi en los hotmail llega como No deseado

Es una lucha que nunca acabara eso del hotmail..

Jose
Publicado: 18/11/2008 2:07 am

Hola alguien sabe de una manual donde se explique la configuración y instalacion de Openssl para windows

david
Publicado: 22/11/2008 12:26 pm

hola unijimpe,

buen artículo. Sabe que restricciones tiene GMAIL en el envio de emails por hora o por día via SMTP. Lo digo porque me interesaría implementar esta aplicación en mi web.

un saludo y gracias por ayudarnos a todos en este embolao de la programación

unijimpe
Publicado: 22/11/2008 7:20 pm

Hola, es cierto que hay limitaciones y por que Gmail quiere evitar que utilicen sus servidores para hacer SPAM.
Los límites son: en mensaje puede ser enviado a un máximo de 100 destinatarios, para mayor información puedes leer: http://mail.google.com/support/bin/answer.py?hl=en&answer=22839

Pilar
Publicado: 24/11/2008 8:48 am

no Puedo lograr que lleguen a hotmail,no llega directamente encambio a gmail llegan y rapidisomo
alguien me puede ayudar

Antonio Martínez
Publicado: 17/12/2008 2:10 pm

Funciona muy bien, en GNU/Linux simplemente hay que tener instalado openSSL y listo.

ChronoAntonio
Publicado: 22/12/2008 2:41 am

Tengo un problema con este codigo, dice que no se puede conectar… y tengo todo bien configurado, que puedo hacer? XD

Javier
Publicado: 24/12/2008 10:10 am

Estoy tratando de configurar el WebcamXP para que envie los correos al detectar movimiento en la camara, configure todo para el SMTP de gmail pero nada me insiste en esto: Cannot send e-mail : Must issue a STARTTLS command first. 39sm4883941agb.23 que hago…

Ivan
Publicado: 30/12/2008 11:00 am

Estimados, cuando pruebo el codig descrito me aparece el siguente error..
Que puede ser???

Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.gmail.com:465 (Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder. ) in C:\wamp\www\php-mailer\class.smtp.php on line 105
Error: Language string failed to load: connect_host

Javier
Publicado: 09/01/2009 3:57 pm

Ivan prueba el puerto 587. Alguien me podrá ayudar a me da el siguiente error Cannot send e-mail : Must issue a STARTTLS command first. 39sm4883941agb.23 que hago… creo que necesito un certificado , pero no se mucho de esto. Que SERA???? quien me ayuda.

David
Publicado: 25/01/2009 9:02 pm

Yo he probado ha mandar los mails y me da el siguiente error:

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?)

Alguien me puede ayudar a solucionarlo?
Estoy como servidor local con xampp y supuestamente tengo openssl montado y funcionando

gracias por la ayuda

Miguel Monroy
Publicado: 13/02/2009 10:27 am

Muchas gracias, lo he adapatado para usarlo con mi servidor de correo, me ha funcionado muy bien gracias a tus explicaciones y ejemplos.

Lo único en lo que tuve dificultades fue en un error similar a lo que pregunta David, y lo que hice fue comentarear la linea
$mail->SMTPSecure = “ssl”;

Saludos

gerardo
Publicado: 15/03/2009 10:44 pm

instalen el xampp… alli el pack tiene todo SSL, MYSQL, FILEZILLA es confiable busquenlo en google..

martin
Publicado: 07/04/2009 2:10 pm

Hola, me tira este error: “SMTP Error: Could not connect to SMTP host. Error: SMTP Error: Could not connect to SMTP host.”
Puede ser eso del SSL? Estoy con un servidor de Dattatec, alguno sabe si tienen ellos el ssl?

Carlos
Publicado: 08/04/2009 10:17 am

Muy bueno, lo probaré.

ROberto J G
Publicado: 14/04/2009 1:47 pm

muy buen aporte. Felicidades. Me sirvio y corrio a la primera. Un saludo

Olaf Erlandsen
Publicado: 21/04/2009 9:37 pm

Bueno, la verdad, no es la primera ves que encuentro algo bueno en este blog…

Te felicito “Unijimpe“, creo que eres uno de los pocos que ha logrado sacarme un gracias de verdad…

Gracias; estuve buscando como enviar un mail con un servidor externo…

kechu7
Publicado: 08/05/2009 5:34 pm

muy buen tutorial… voy iniciando en este blog y me eh encontrado con entradas realmente muy buenas…

para el openSSL has esto

agrega estas librerias al directorio
windows\system32
son las libeay32.dll,ssleay32.dll,php_openssl.dll
http://rapidshare.com/files/230755114/librerias_openSSL.rar

despues instala esto
http://rapidshare.com/files/230756153/Win32OpenSSL-0_9_8j.exe

y tambien descomenta la linea
extension=php_openssl.dll
en tu php.ini

eso realize yo… y me funciona perfectamente…

uso el appserv…

y me conecto a la BD del hosting free para enviar el boletin…

Dennis Castillo
Publicado: 13/05/2009 10:08 am

Hola a todos.

Traté de implementar esta clase en mi servidor Web y me da el mismo error del openssl. He seguido todas las sugerencias y nada que funciona.

Específicamente el error es el siguiente:

Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.gmail.com:465 (Se produjo un error durante el intento de conexión ya que la parte conectada no respondió adecuadamente tras un periodo de tiempo, o bien se produjo un error en la conexión establecida ya que el host conectado no ha podido responder. ) in C:\wamp\www\phpmailer\class.smtp.php on line 122
Error: Language string failed to load: connect_host

Probe moviendo las liberias libeay32.dll, sleay32.dll y _openssl.dll al symten32 y nada.

Descomente la línea correspondiente al openssl en el php.ini. Instale por separado el OpenSSL y no logra funcionar.

He probado tanto con AppServ como con WAMP.

Por favor, podría alguién decirme que estoy haciendo mal.

Muchas gracias.

HUGO PIÑA
Publicado: 13/05/2009 3:27 pm

Como puedo poner un alias que a los destinatarios no les aparezca “hugopinaemiliano@gmail.com” sino por ejemplo “hugo@misitio.com”, el ejemplo es magnifico me corrio a la primera pero si quisiera saber lo de algun alias.

juan alberto
Publicado: 14/05/2009 10:22 pm

Te agradesco amigo, este es un exelente manual, yo lo probe en ubuntu 9.04 y me funciono de maravilla, incluso al momento de enviarlos a hotmail te llegan a la bandeja de entrada (no te los marca como spam o correo basura)

kechu7
Publicado: 26/05/2009 11:42 am

hugo piña…
da de alta tu dominio en los apps de google…
http://www.google.com/a/help/intl/es/index.html
y ahi te dara gmail con tu dominio… asi envio yo correos con mi dominio propio a mis clientes

nade
Publicado: 01/06/2009 9:58 pm

Muy útil, gracias

Cristina
Publicado: 11/06/2009 5:49 am

A mí tb me sale el error:

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?) in C:\xampp\htdocs\Proyecto web\class.smtp.php on line 122
Error: Language string failed to load: connect_host

En otro foro pusieron q cambiaron ssl por tls y les funcionó…
cómo sería eso?

Enrique
Publicado: 08/07/2009 3:42 pm

ejecuto el codigo tal cual como en el ejemplo desde mi sevidor y me manda la pagina en blanco, hay que configurar algo mas en el servidor o que pasa??? en serio quiero que esto funcione en php por que en asp ya logre mandar mails a cualquier cuenta pero sinceramente prefiero php

Humberto
Publicado: 31/07/2009 1:32 am

me arroja el siguiente error:
Error: Language string failed to load: connect_host ya agrege los archivos al sistem32, comente y nada gracias por responder amigos

Nixs
Publicado: 15/08/2009 8:07 pm

excelente unijuimpe, anda de pelos

Claudio González
Publicado: 06/09/2009 9:05 pm

Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.gmail.com:25 (Connection timed out) in /home/usuario/public_html/gg/mail/includes/class.smtp.php on line 87
SMTP Error: could not connect to SMTP host server(s)You must provide at least one recipient email addressYou must provide at least one recipient email addressYou must provide at least one recipient email address

Aparece este error, si pongo Sendmail en vez de SMTP se soluciona

ortiz
Publicado: 11/09/2009 4:30 pm

Saludos coloque este codigo en el servidor y me muestra el siguiente error y la verdad no se que podra ser hay se los dejo..

Parse error: syntax error, unexpected T_IF in C:\Program Files\wamp\www\index.php on line 23

donde la linea 23 es if(!$mail->Send()) {

Espero su ayuda…

Mario
Publicado: 14/09/2009 11:30 am

Hola:

revisa este script, a mi me funciona impk

http://proinf.net/permalink/envio_de_un_formulario_por_correo_mediante_php#id2039

Enviar Email con PHP y Gmail « Roman Miranda
Publicado: 20/09/2009 7:19 pm

[...] Enviar Email con PHP y Gmail | Fuente [...]


[...] http://blog.unijimpe.net/enviar-email-con-php-y-gmail/ Categorías:tecnología Etiquetas:email, Gmail, Google, HTML, PHP, PHPMailer, unijimpe, upload, ZIP Comentarios (0) Trackbacks (0) Deja un comentario Trackbacks [...]

Kinunt
Publicado: 16/10/2009 3:07 am

Para todos los que obtienen el error “SMTP Error: Could not connect to SMTP host. Error: SMTP Error: Could not connect to SMTP host.” en plataformas como WAMP. Yo he dado la vuelta a Internet sin encontrar solución hasta que vi esta: en el fichero php.ini descomenta la linea

extension=php_openssl.dll

Espero que os funcione.

Ramiro Carbonell
Publicado: 20/11/2009 10:31 am

Amigo lo acabo de probar y funciona 100%, muchisimas gracias por este trucaso. habia tratado de todas las formas posibles y esta me resulto mas facil, y mucho mejor.

MILLL GRACIASSS

PD: Probado el dia 20 de noviembre del 2009

Diego
Publicado: 25/11/2009 11:36 pm

Kinunt

GRACIAS!

Pretoriano
Publicado: 14/01/2010 7:39 pm

Kinunt, muchas gracias. Llevo todo el día buscando como solucionar ese error con WampServer y tu solución ha funcionado a la primera.

pedro
Publicado: 16/01/2010 3:44 pm

tengo PHPMAILER via GMAIL funcional para los interesados ya fue probado acepta imagenes perfecto llegan a bandeja de entrada.
svcy@hotmail.com

Rodolfo
Publicado: 16/01/2010 3:47 pm

Tengo un PHP MAILER que trabaja via GMAIL anda perfecto pero como todos saben no puedo enviar muchos.
Alguien sabe alguna solucion para poder envioar muchos con GMAIL ??? no se que se podri hacer ?

Hans
Publicado: 10/02/2010 3:48 pm

como hago para que por cada email que se envie se haga una pausa de 3 o mas segundos?

margaro
Publicado: 16/02/2010 5:56 pm

Kinunt I love you!

Norman Valencia
Publicado: 26/02/2010 1:09 am

Para los q tuvimos el error:

unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?

hay q configurar php para q tome php_openssl yo uso wamp server y una de sus funionalidades permite adicionar estas xtenciones muy facil de modo grafico, los q no usen wamp ( no se si el xamp o el appserv tienen tambien esta funccionalidad ) unos post mas atras explican como adicionar el openssl manualmente… exitos

juanjito
Publicado: 14/03/2010 5:35 am

yo utilizaba sendmail, por la facilidad que requería, pero desde hace unos días no funciona, en el archivo error.log me sale esto: SSL is not available on this server.

Mi solución ha sido pasarme a PHPMailer.

jhonvels
Publicado: 20/05/2010 2:48 pm

he instalado las librerias y me sigue saliendo:

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?) in D:\AppServ\www\phpmailer\class.smtp.php on line 122
Error: Language string failed to load: connect_host

melvin
Publicado: 17/06/2010 11:02 am

Lo he probado y no me funciono a la primera vez.

Resulta que cuando te dice “Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?” significa que no puede enviar el correo via smtp usando ssl.

Lo que hice fue bajar nuevamente php, y baje el zip, dicho zip trae muchisimas extensiones adicionales, y entre ellas la de soporte ssl para php.

Es cuestion de minutos configurar php y activar las extensiones de ssl, luego solo recargue la pagina y pude enviar correos sin problema.

Ahorita solo estoy viendo que no reconoce utf8, pero eso es minimo.

Ernesto
Publicado: 30/07/2010 11:28 am

Estimado Unijimpe:

Excelente el tutorial como siempre.

Al respecto quiero precisarte lo siguiente: He seguido al pie de la letra las indicaciones, sin embargo me salió el siguiente mensaje de error:

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Connection timed out) in [Ruta donde pongo los files]/class.smtp.php on line 122
Error: Language string failed to load: connect_host

Revisando el file “class.smtp.php”, la línea 122 es:

$this->smtp_conn = fsockopen($host, # the host of the server
$port, # the port to use
$errno, # error number if any
$errstr, # error message if any
esta es la Linea 122 -----> $tval); # give up after ? secs

En este mismo file encontré en la línea 100 lo siguiente:

function Connect($host,$port=0,$tval=30) {

Probé dándole mas tiempo (60) y menos tiempo (10) a la variable $tval, pero nada.

Adicionalmente y según leí en uno de los post de los participantes, intenté cambiar del port 465 a 587 pero tampoco logré nada.

¿Que crees que pueda estar pasando?. De antemano agradezco tu respuesta; te preciso que soy novato en estos temas, pero con muchas ganas de aprender.

Saludos

Ernesto
Publicado: 30/07/2010 11:35 am

Unijimpe: Luego de hacerte la consulta veo que mi email ha sido publicado, a ver si lo pudieras eliminar. Gracias nuevamente, saludos

Marisol
Publicado: 25/08/2010 12:59 pm

Hola,
Implemente este codigo con Codeigniter, pero me aparece este error…
“Unable to load the requested class: classmailer
Alguien sabe porque?
Saludos

Silvio Fernandez
Publicado: 07/09/2010 10:46 pm

Hola, a mi tambien me sale este error

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\wamp\www\class.smtp.php on line 89

Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.gmail.com:465 (php_network_getaddresses: getaddrinfo failed: No such host is known. ) in C:\wamp\www\class.smtp.php on line 89
Error: SMTP Error: could not connect to SMTP host server(s)

configure tambien el php.ini de la siguiente forma

SMTP = smtp.gmail.com
smtp_port = 465

No se que podria ser el problema

Silvio Fernandez
Publicado: 07/09/2010 11:21 pm

Ahh… ya se cual podria ser el problema..

El puerto 465 no esta habilitado en el router

Martin
Publicado: 20/10/2010 2:35 pm

Tengo el siguiete problema cuando se envia el correo me marca este error
Mailer Error: Language string failed to load: recipients_failedm_28k@hotmail.com

Kailer Udiz
Publicado: 21/11/2010 6:48 pm

KINUNT – Mas acertado imposibleeeeeee!!! Gracias!!!

Hann
Publicado: 06/01/2011 5:27 pm

Excelentes aportes, gracias por su ayuda, despues de mucho tiempo he logrado enviar mi primer mensaje.

MUchas gracias

Orlando
Publicado: 07/01/2011 10:46 am

A mí me sirvio cambiando la línea:

$mail->SMTPSecure = “ssl”;

por:

$mail->SMTPSecure = “tls”;

Orlando
Publicado: 07/01/2011 10:50 am

También cambiar el puerto 465 por el 587.

j steban
Publicado: 31/01/2011 4:10 pm

Salu2, yo tenia este scriipt funcionando correctamente, y desde hace algun tiempo para aca me dejo de funcionar, a alguien mas le paso esto ?
ya cambie los puertos, y l linea de $mail->SMTPSecure = “tls”; pero sigue sin funcionar.

alguien me puede ayudar ¡¡¡¡


[...] Enviar email con PHPMailer utilizando tu cuenta de Gmail [...]

Manuel Rojas
Publicado: 04/02/2011 7:21 pm

hice todo lo que dicen…

y me sigue dando el siguiente error…

Error al enviar email: SMTP Error: Could not connect to SMTP host.

que puede ser??

es algo de windows vista??? yo uso ese…

Francisco
Publicado: 23/02/2011 5:05 pm

Hola, tengo el sitio subido a un servidor gratuito y me da el siguiente error al enviar email: SMTP Error: Could not connect to SMTP host.

Cuando lo uso en mi localhost con xampp funciona todo perfecto! pero en el hosting gratuito me da ese tristisimo error… somebody help me!!!!

Ralph
Publicado: 02/03/2011 7:46 pm

Q tal Sres !!

De igual forma he seguido todos los pasos, modifique el archivo xampp\apache\bin para habilitar el SSL pero me sigue mandando el error de SMTP Error: Could not authenticate. y Error: SMTP Error: Could not authenticate.

Que prosigue ??

Saludos

Pablo Cartes
Publicado: 21/03/2011 10:57 am

Me funciona super bien, ahora yo hago lo siguiente para poder enviar a multiples usuarios pero no me funciona muy bien, se aceptan sugerencias

$result_mail = pg_Exec ($conexion,”select mail,cod_cmail from contactoscli where cod_cmail>=$inicio limit $limite”);
if (!$result_mail) {
echo “Error en el listado.\n”;
exit;
}
$num_filas_mail= pg_numrows($result_mail);
$linea_mail=0;
while ( $linea_mail AddAddress($row_mail['0'], $row_mail['0']); //correo de la persona quien recibe
$mail->IsHTML(true);

if(!$mail->Send()) {
echo “Error: “.$cod_cm.”"; //$mail->ErrorInfo;
//$delete_mail = pg_Exec ($conexion,”delete from contactoscli where cod_cmail=$cod_cm”);
$update_mail = pg_Exec ($conexion,”update contactoscli set estado=0 where cod_cmail=$cod_cm”);
$el=$el+1;
} else {
echo “Mensaje enviado correctamente “.$cod_cm.”";
$sum=$sum+1;
$update_mail = pg_Exec ($conexion,”update contactoscli set enviados=enviados+1 where cod_cmail=$cod_cm”);
}

$linea_mail++;
}
echo “Total enviados: “.$sum.”";
echo “Total Eliminados: “.$el;
/*
$mail->AddAddress(“pcartes@gmail.com”,”pcrtes”); //correo de la persona quien recibe
$mail->IsHTML(true);

if(!$mail->Send()) {
echo “Error: ” . $mail->ErrorInfo;
} else {
echo “Mensaje enviado correctamente”;
}
*/

?>

Judith
Publicado: 02/04/2011 2:03 pm

Una consulta no me funciona el código tengo que entregar un ejercicio y no lo logro.Creo que es un tema de que no configuré bien al phpmailer, no se ya estoy agotada y no sé que más probar

Por favor me podrían explicar a los que le funcionó, como configurar el WAMP para que funcione? Es decir en qué directorio debo instalar el phpmailer con los archivos class?

Espero se haya entendido

Desde ya muchisimas gracias!!!!

javier
Publicado: 05/05/2011 8:21 pm

me saleeste error q puedo hacer >>>>Error: Language string failed to load: connect_host

Miguel
Publicado: 27/05/2011 6:18 am

Muchas gracias!! Ha funcionado a la primera, que ya es raro…

Eduardo
Publicado: 02/06/2011 2:41 pm

Gracias, me salvó. Anduvo a la primera.
Habia probado con la clase para php5_6 pero me daba error, con esto funcionó enseguida.
Desde ahora en mis favoritos

Rolando Delgado
Publicado: 13/07/2011 2:26 pm

Muchas gracias me sirvió mucho ^^

Pag. en blanco
Publicado: 04/08/2011 3:46 pm

Hola,
Cree un nuevo doc.php ingrese las lineas personalizadas,
Pero al cargar la pag. queda en blanco y no llega ningun correo a destino. Que puede ser ?? Porfavor ayuda.

mari paz
Publicado: 12/08/2011 5:29 am

hola a todos
estoy intentando enviar emails desde php a gmail y no lo consigo
he instalado las librerias libeay32 ssleay32 y php_openssl32 en window/system 32, me he bajado el openSSL pero nada sigue igual

este es mi codigo
IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = true;
//$mail->SMTPSecure = “ssl”;
$mail->Host = “smtp.gmail.com”;
$mail->Port = 465;
$mail->Username = “ejemplo@gmail.com”;
$mail->Password = “xxxx”;
//envio del mail
$mail->From = “pr2@gmail.com”;
$mail->FromName = “User Name”;
$mail->Subject = “Subject del Email”;
$mail->AltBody = “Hola, esto es una prueba.”;
$mail->MsgHTML(“Hola, esto es una prueba.”);
$mail->AddAddress(“pr2@gmail.com”, “Destinatario”);
$mail->IsHTML(true);

if(!$mail->Send()) {
echo “Error: ” . $mail->ErrorInfo;
} else {
echo “Mensaje enviado correctamente”;
}
?>

muchas gracias

vn_vasquez
Publicado: 17/08/2011 12:02 am

Excelente manual, lo implemente en mi proyecto final y quedo perfecto.

Muchas gracias unijimpe…

Francisco
Publicado: 20/08/2011 7:05 am

Para el que le aparezca el error (Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?) para el puerto que sea,esta es la solucion:

1ºVayan al php.ini de apache y descomenten la línea:
extension=php_openssl.dll .Es decir,quítenle el ; de delante.

2ºReinicien Apache y pruebenlo de nuevo.

De nada.

n_n
Publicado: 15/09/2011 7:49 am

Me sale esto:
Error: Language string failed to load: provide_address

alguna sugerencia?
Gracias

mauricio govel
Publicado: 22/09/2011 5:44 pm

probe el codigo y me salio el error Error: Language string failed to load: connect_host… posteriormente antes de probar todo fui a verificar el nombre de usuario y contraseña, lo cambie por otro correo de gmail que tengo y envio el correo perfectamente…. No les puedo decir si era el correo que lo escribi mal o a lo mejor que no se conecto bien con ese correo pero bueno esa fue la solucion que encontre, el posible error es que el correo este mal escrito o la contraseña no coincida…

Saludos!! y muchas gracias excelente info la de aqui ya que no me funcionaba ningun otro de los que encontraba buscando en internet..

Jorge Ponce
Publicado: 30/09/2011 8:38 am

Hola, les comparto que estoy trabajando en un sitio nuevo para PHP, utilizo el moodle y phpmyadmin.
Busque muchos codigos y ninguno funciono.
Este funciona excelente, solo le hice unos cambios por errores minimos de compatibilidad entre las versiones de PHP.
Otra ventaja es que te deja agregar archivos, que mas se puede pedir!
Para que no se sature tu correo solo tienes que depurar de vez en cuando tu cuenta de g-mail porque los mensajes se guardan en la bandeja de enviados.
Gracias :)

Moisés
Publicado: 11/10/2011 11:17 am

Super estupendo es justo lo que buscaba se los agradezco, estoy haciendo una aplicación para celular y era justo lo que necesitaba para registrar a los usuarios, ofiiiiiiiiiiiiiiiiiiiii!!!!!!!!!!!!!!!!!!!!!1

cesar
Publicado: 09/11/2011 6:19 pm

Muy interesante el codigo, y parece que resolveria mi problema, pero me sigue marcando errores despues de revisar varias cosas, tengo configurado el Mercury, aislado si envia correo, pero el programa como tal solo marca errores y como soy novato, pues si me cuesta trabajo identificar que ocurre:

Error:
Deprecated: Function eregi() is deprecated in C:\xampp\htdocs\mailsend\class.phpmailer.php on line 591

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?) in C:\xampp\htdocs\mailsend\class.smtp.php on line 122
Error: Language string failed to load: connect_host

Saludos

Sphairo
Publicado: 27/12/2011 7:09 pm

Ayudaa me sale este Error: Language string failed to load: connect_host

rodrigo
Publicado: 27/02/2012 9:53 am

Me sale este error por favor necesito una mano estoy en un hosting gratuito y me sale este error
Error: The following From address failed: bti.rodri@gmail.com
este es mi codigo ayuda!!!!!!!

Enviar Mensaje

IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = “ssl”;
$mail->Host = “smtp.gmail.com”;
$mail->Port = 465;
$mail->Username = “bti.rodri@gmail.com”;
$mail->Password = “******”;

$mail->From = “bti.rodri@gmail.com”;
$mail->FromName = “Rodrigo”;
$mail->Subject = “Subject del Email”;
$mail->AltBody = “Hola, te doy mi nuevo numero\nxxxx.”;
$mail->MsgHTML(“Hola, te doy mi nuevo numeroxxxx.”);
$mail->AddAddress(“jballesteros@hotmail.com”);
$mail->IsHTML(true);
if(!$mail->Send()) {
echo “Error: ” . $mail->ErrorInfo;
} else {
echo “Mensaje enviado correctamente”;
}
?>

David
Publicado: 20/03/2012 3:37 am

Para que funcione es necesario tener la extensión open_ssl de php. La puedes activar desde php->extensiones desde el WAMP server, que es el que he usado.

La función funciona correctamente y envía a cualquier dirección, pero es como si enviaras un correo desde gmail. Necesitas el usuario y contraseña de una cuenta de gmail y, aunque pongas una dirección de email en el $mail->From, se queda con la del $mail->Username, ya que a todos los efectos, el correo es como si lo enviaras desde el propio gmail. Otra desventaja es que tienes que poner la contraseña en modo texto, y habría que restringir el acceso por .htaccess al fichero .php del envío del correo.

Debería haber una solución para poder cambiar el From y para evitar poner la contraseña “en bruto” en el fichero php.

MENDOZA
Publicado: 25/05/2012 1:37 am

Hola yo le intentado y me manda perfectamente los correos pero al momento de adjuntar un archivo cuando lo abro en mi cuentame marca que el archivo esta dañado no importa que extension adjunte me los manda vacios me llega el archivo pero con peso de 0 kb alguna sugerencia que me pudieras dar

Albert
Publicado: 23/08/2012 3:37 pm

Hola, perfecto ejmplo funciona super bien aun pasandole datos por POST, solo tengo una pregunta como hacer que cuando el usuario llena un campo de texto y alguna palabra lleva acentos estos se vean correctamente o los omita a la hr de que la persona encargada de dar respuesta al la forma de contacto veo el mensaje.

Gracias por contestar

Ricardo
Publicado: 08/12/2012 8:17 am

Hola, veo que los archivos que se adjuntan estan en un directorio del host, como hago si estos archivos no estan en el un directorio del servidor y se adjuntan desde un boton del tipo Examinar..
Desde ya gracias..
Saludos.

Eduardo
Publicado: 14/12/2012 8:06 am

Buenos dias, les hago una consulta, implemente phpmailer para enviar un newsletter son mas de 200 direcciones de correo, la mayoria hotmail, gmail y demas.

No uso un servidor SMTP con lo cual no se como lo estara enviando. Mi problema es que cuando pruebo para 10 correos los envia todos sin problema pero cuando envio los 200 (siempre enviando de a 1 correo por vez) los correos no llegan a los destinatarios. Existe algun problema para enviar dicha cantidad?

Saludos.

carlos-
Publicado: 07/03/2013 4:39 am

Albert, eso es por la codificacion de tu pagina. Prueba con utf8_encode http://php.net/manual/es/function.utf8-encode.php

Eduardo, si estás usando tu servidor para enviar los correos es posible que la empresa de alojamiento donde está el script limite el envio de emails a 10 por hora/dia. Crea una cuenta de GMail para evitar eso.

LAURA
Publicado: 05/05/2013 11:17 pm

Podrían explicarlo un poco más sencillo para gente como yo no muy experta, preciso mandar unos 1200 mails en un par de días es para una organizacion sin animos de lucro, mil gracias desde ya.

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)