Es relativamente fácil enviar correo con PHP usando la función mail(). Pero en algunas ocasiones querremos hacer algo más complejo pero de forma que nos cueste menos trabajo, y de paso que nuestro código quede más legible.
Para ello podemos hacer uso de la clase PHPMailer. Lo primero que tenemos que hacer es incluir la clase PHPMailer. Acto seguido creamos una instancia de la clase. A continuación vamos a ver cuales son:
Nombre | Descripción | Valor por defecto |
---|---|---|
AltBody | Texto alternativo. Para los mensajes en solo texto. | “” |
Body | Cuerpo del email. Puede ir en formato HTML. | “” |
CharSet | Conjunto de caracteres del correo. | iso-8859-1 |
ConfirmReadingTo | Dirección a la que se enviará una confirmación de lectura del correo. | “” |
ErrorInfo | Información sobre el último error producido. | “” |
From | Dirección de origen del mensaje. | root@localhost |
FromName | Nombre del emisor del mensaje. | Root User |
Host | Servidor SMTP a través del cual se enviará el correo. | localhost |
Mailer | Método mediante el cual se enviará el correo. Puede ser mail, sendmail o smtp. | |
Password | Contraseña del servidor SMTP | “” |
PluginDir | Directorio donde se encuentran los plugins. Por ejemplo el de envio por SMTP. | “” |
Port | Puerto del servidor SMTP. | 25 |
Priority | Prioridad del email. (1 = Alta, 3 = Normal, 5 = Baja) | 3 |
ReplyTo | Direcciones a las que responder el correo. | array() |
SMTPAuth | Establece si hay o no autenticación SMTP. | false |
Subject | Asunto del correo. | “” |
Timeout | Tiempo de espera antes de producirse un error den TimeOut | 10 |
Username | Usuario del servidor SMTP | “” |
WordWrap | Ancho máximo del mensaje. | 0 |
Ahora veamos los principales métodos:
Nombre | Retorno | Parámetros | Descripción |
---|---|---|---|
AddAddress | void | $address: dirección de correo. $name: nombre del destinatario. Este parámetro es opcional. |
Añade una dirección de destino para el correo. |
AddAttachment | bool | $path: Ruta del archivo. $name: Nombre del archivo. $encoding: Tipo de codificación. Por defecto base64. $type: Tipo MIME del archivo. Por defecto application/octet-stream. |
Añade un archivo adjunto al mensaje. |
AddBCC | void | $address: Dirección que queremos añadir. $name: Nombre del destinatario. Este parámetro es opcional. |
Añade una dirección BCC. |
AddCC | void | $address: Dirección que queremos añadir. $name: Nombre del destinatario. Este parámetro es opcional. |
Añade una dirección como CC. |
AddReplyTo | void | $address: Dirección que queremos añadir. $name: Nombre del destinatario. Este parámetro es opcional. |
Añade una dirección para el Reply To. |
IsHTML | void | $bool: indica si el mesaje es en formato HTML | Establece un mensaje como HTML. |
Send | bool | — | Envía el mensaje. Devuelve true si se envía correctamente. En caso de devolver false podemos consultar la propiedad ErrorInfo para saber que error ha ocurrido. |
Después de esto vamos a ver un pequeño ejemplo:
<? include("class.phpmailer.php"); //Creamos la instancia de la clase PHPMAiler $mail = new phpmailer(); //El método que usaremos es por SMTP $mail->Mailer = "smtp"; // Los datos necesarios para enviar mediante SMTP $mail->Host = "smtp.nuestrohost.com"; $mail->SMTPAuth = true; $mail->Username = "cuenta@nuestrohost.com"; $mail->Password = "password"; // Asignamos el From y el FromName para que el destinatario sepa quien // envía el correo $mail->From = "cuenta@nuestrohost.com"; $mail->FromName = "Manuel Carrascosa de la Blanca"; //Añadimos la dirección del destinatario $mail->AddAddress("direccion@hostdestino.com"); //Asignamos el subject, el cuerpo del mensaje y el correo alternativo $mail->Subject = "Ejemplo de PHPMailer"; $mail->Body = "<p>Esto es un <strong>ejemplo</strong> de correo.</p>"; $mail->AltBody = "Esto es un ejemplo de correo."; //Si al enviar el correo devuelve true es que todo ha ido bien. if($mail->Send()) { //Sacamos un mensaje de que todo ha ido correctamente. echo "Mensaje enviado correctamente."; } else { //Sacamos un mensaje con el error. echo "Ocurrió un error al enviar el correo electrónico."; echo "<br/><strong>Información:</strong><br/>".$mail->ErrorInfo; } ?>
El código es autoexplicativo, pero si tenéis alguna duda se puede preguntar en los comentarios sin problema alguno.
Normalmente suelo recomendar consultar la documentación de las librerías que comento en el blog. Esta vez no va a ser menos y la podéis consultar en la web de PHPMailer. Hay que ir al siguiente menú: Products > PHPMailer > support – x, donde la x es un tema documentado, como los métodos, las propiedades o un tutorial.
En este caso no se adjunta archivo con el código del ejemplo, ya que no funcionaría directamente al tener que configurar bien los datos del emisor y el receptor y los datos del servidor SMTP. Pero tenéis la opción de copiar y pegar y colocar los datos de acuerdo con vuestras necesidades.
a
Hola..por que cuando me llega el mail desde el formulario que esta en la web, me aparece como remitente user@localhost?Yo capturo el mails a traves del form.. no se puede poner para que ese mail sea el From?Gracias…
Hola.Felicitaciones. Muy completo tu post. Me gustó. Muchas gracias.Solo tengo una duda. Cuando solicito la confirmación de lectura del correo ¿Dónde recibo dicha confirmación?De antemano, Gracias. Saludos.
¿y el puerto del servidor?