Enviar Email con PHP y Gmail
- 03/11/2008
- 12:24 am
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.
-
include("class.phpmailer.php");
-
include("class.smtp.php");
-
-
$mail = new PHPMailer();
-
$mail->IsSMTP();
-
$mail->SMTPAuth = true;
-
$mail->SMTPSecure = "ssl";
-
$mail->Host = "smtp.gmail.com";
-
$mail->Port = 465;
-
$mail->Username = "username@gmail.com";
-
$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.
-
$mail->From = "user@domain.com";
-
$mail->FromName = "User Name";
-
$mail->Subject = "Subject del Email";
-
$mail->AltBody = "Hola, te doy mi nuevo numero\nxxxx.";
-
$mail->MsgHTML("Hola, te doy mi nuevo numero<br><b>xxxx</b>.");
-
$mail->AddAttachment("files/files.zip");
-
$mail->AddAttachment("files/img03.jpg");
-
$mail->AddAddress("destino@domain.com", "Destinatario");
-
$mail->IsHTML(true);
-
-
if(!$mail->Send()) {
-
} else {
-
echo "Mensaje enviado correctamente";
-
}
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.
Posts Relacionados
- Envíar E-mail con PHP
- Enviar email con Flash y PHP
- Enviar email multiple con PHP
- Importar Contactos con PHP
- Javascript: Evitar doble Submit
Total de Comentarios: 29
Como puedo hacer para llamar al php desde htlm,gracias
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.
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?
Y como seria para enviar mails con el Gmail For Your Domain.
a donde incluyo los binarios. tengo appserv.
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..
Hola alguien sabe de una manual donde se explique la configuración y instalacion de Openssl para windows
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
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
no Puedo lograr que lleguen a hotmail,no llega directamente encambio a gmail llegan y rapidisomo
alguien me puede ayudar
Funciona muy bien, en GNU/Linux simplemente hay que tener instalado openSSL y listo.
Tengo un problema con este codigo, dice que no se puede conectar… y tengo todo bien configurado, que puedo hacer? XD
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…
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
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.
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
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
instalen el xampp… alli el pack tiene todo SSL, MYSQL, FILEZILLA es confiable busquenlo en google..
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?
muy buen aporte. Felicidades. Me sirvio y corrio a la primera. Un saludo
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…
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…
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.
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.
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)
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
Muy útil, gracias
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?

