• RSS
  • Facebook
  • Twitter
  • Linkedin
  • Google +
  • Youtube

como-enviar-correo-smtp-autenticado-con-php

Después de recibir varias dudas vuestras de cómo enviar un correo autenticado desde PHP, os hemos pegado un fragmento de código simple para realizar el envío. Más abajo tenéis un enlace a las clases phpmailer.php y smtp.php que se importan en el código.

Descargar aquí | Dentro de GitHub clickar en la parte derecha sobre “Download ZIP”

Hosting windows asp.net

Configuración PHPMailer para el envío de correos SMTP

A continuación, desde Domitienda, te explicamos cómo configurar PHPMailer para el envío de correos electrónicos.

  1. Configurar el servidor SMTP: para poder enviar un mensaje de correo electrónico lo primero es configurar el servidor SMTP.
  2. Configurar correo: una vez configurado el servidor SMTP, el siguiente paso es crear el correo electrónico a enviar. Hay que indicar los siguientes puntos; dirección de correo del remitente y destinatario(s), asunto del mensaje, contenido del correo y ficheros adjuntos.

require(‘class.phpmailer.php’);

require(‘class.smtp.php’);

$nombre = $_POST[“nombre”];
$telefono = $_POST[“telefono”];

$mail = new PHPMailer();

$body = “Hola es una prueba”;
$body .=”ojalá funcione”;

$mail->AddAttachment(“imagenes/imagenadjuntaalcorreo.jpg”, “nombre_escogido_a_mostrar.jpg”)

El primer valor es el que se usa para selecionar la ruta del archivo. El segundo indica el nombre escogido para mostrar el archivo adjunto al destinatario.

$mail->IsSMTP();

/* Sustituye (ServidorDeCorreoSMTP)  por el host de tu servidor de correo SMTP*/
$mail->Host = “ServidorDeCorreoSMTP”;

/* Sustituye  ( CuentaDeEnvio )  por la cuenta desde la que deseas enviar por ejem. prueba@domitienda.com  */

$mail->From = “CuentaDeEnvio”;

$mail->FromName = “Domitienda”;

$mail->Subject = “prueba de envio”;

$mail->AltBody = “prueba”;

$mail->MsgHTML($body);

/* Sustituye  (CuentaDestino )  por la cuenta a la que deseas enviar por ejem. admin@domitienda.com  */
$mail->AddAddress(“CuentaDestino”, “Domitienda”);

$mail->SMTPAuth = true;

/* Sustituye (CuentaDeEnvio )  por la misma cuenta que usaste en la parte superior en este caso  prueba@domitienda.com  y sustituye (ContraseñaDeEnvio)  por la contraseña que tenga dicha cuenta */

$mail->Username = “CuentaDeEnvio”;
$mail->Password = “ContraseñaDeEnvio”;

if(!$mail->Send()) {
echo “Mailer Error: ” . $mail->ErrorInfo;
} else {
echo “Message sent!”;
}

¿Qué es PHPMailer?

Se conoce como PHPMailer a una determinada clase PHP para el envío de emails basada en el componente active server ASPMail. Gracias a PHPMailer se pueden ejecutar tareas complejas como el envío de correos electrónicos en formato HTML de una manera muy sencilla.

PHPMailer permite enviar emails por tres vías: Sendmail, PHPMail, o SMTP. En líneas generales, la última opción resulta más recomendable principalmente por dos razones. Por un lado, con PHPMailer se pueden utilizar varios servidores SMTP; es decir, la carga se reparte entre varios ordenadores, lo que supone poder enviar un mayor número de emails en menos tiempo, minimizando así los costes tanto humanos como económicos. Y, por otro lado, los servidores SMTP permiten enviar un mismo mensaje a un amplio abanico de destinatarios.

En resumidas cuentas, las funciones de PHPMailer son las siguientes:

  • Permite enviar un mismo correo electrónico a varios destinatarios con CC, CCO…
  • Autenticación de usuario por SMTP
  • PHPMailer permite el envío de correos electrónicos con HTML
  • Se pueden adjuntar archivos e incluir imágenes en el mensaje

Historia PHPMailer

PHPMailer fue escrito originalmente por Brent R. Matzelle como un proyecto SourceForge en el año 2001. Sólo tres años después, en 2004, Marcus Bointon y Andy Prevost se hicieron cargo del proyecto. Ya en 2012 PHPMailer se convirtió en un proyecto de la Incubadora de Google, dirigido por Jim Jagielski. Fue de aquí donde nació oficialmente PHPMailer.

Envío de emails complejos con PHPMailer

El proceso para enviar un determinado email desde PHP es muy sencillo. Sin embargo, cuando el correo electrónico a enviar tiene características más avanzadas como adjuntar archivos, se queda corto, de manera que el usuario se ve obligado a utilizar otras vías.

Es ahí donde entra PHPMailer, una clase que facilita de manera considerable el envío de este tipo de correo electrónicos; una solución muy útil y potente. Gracias a PHPMailer se pueden enviar emails con archivos adjuntos, distintos tipos de servidores SMTP, tanto con autenticación de usuario como sin ella.

The following two tabs change content below.
Empresa de Hosting & IT Consulting

Latest posts by Domitienda (see all)

Categorías: tutorial

10 Responses so far.

  1. Pablo Enjuto dice:

    Buenas.
    Pongo yo el enlace para descargar las clases a las que se cargan al principio del código:

    http://sourceforge.net/project/showfiles.php?group_id=26031

    Un saludo

  2. Cesar Perez dice:

    Buenas,
    Quisiera hacer una pregunta, se puede enviar actualmente un correo desde un foro del tipo phpbb3, con la funcion mail, o tengo que usar esto???, es que me encuentro el siguiente problema al enviar correos desde el foro:

    [phpBB Debug] PHP Notice: in file /includes/functions_messenger.php on line 416: mail() [function.mail]: SMTP server response: 550 Requested action not taken: mailbox unavailable or not local

    Espero sus noticias, muchas gracias por adelantado.
    saludos.

  3. Pablo dice:

    Pues me temo que si, ya que la funcion mail() no requiere autenticacion y nuestro servidor si.

    Saludos.

  4. Ana dice:

    Muchas gracias!! Un aporte de gran utilidad!!!

  5. Wilson dice:

    creé un formulario con este código y me sale el siguiente error, no se si esté cometiendo una brutalidad:
    Fatal error: Call to a member function IsSMTP() on a non-object in D:\Hosting\7082618\html\formulario.php on line 281

  6. Dario dice:

    Hola,

    ¿donde puedo configurar los valores: Content-Type: text/html; charset=utf-8\r\n ?

    Es que usando este codigo los caracteres latinos (ñ, Ñ, á, ó) no llegan correctamente.

    Un saludo

  7. Dario dice:

    ya solucionado… tenia que settar el archivo class.phpmailer.php

    Muchas gracias

  8. Javier dice:

    Lo malo de este sistema es que ultimamente se ha tornado lento, al momento del envio, del resto muy bien

  9. Buenas,

    He modificado las dns de mi domino en el panel plesk para que mail.midominio.com se dirija a un servidor de correo externo. Yo puedo utilizar el servidor de correo de mi hosting entrando a través de “mail.businet-isp.com” ya que mail.midominio.com ya no apunta a el, pero este código ya no me funciona apuntando directamente a “mail.businet-isp.com”, ¿por qué?

    El código autentica correctamente, pero me devuelve un error 501 5.7.1 del servidor.

    Gracias

  10. jose dice:

    para que me funcione nesesito tener un servidor de correo y lo configure para la clase que requier phpmailer.

Deja un comentario