Enviar emails con phpmailer

PHPMailer es un librería muy popular para hacer el envío de emails con PHP de manera sencilla y orientada a objetos.

PHPMailer acepta hacer el envío de HTML, para ello debemos asignar a la propiedad Body el contenido HTML que deseamos enviar y setear con el método IsHTML a true, como en el siguiente ejemplo básico:

<?php
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "from@domain.com";
$mail->FromName = "From Name";
$mail->Subject = "Demo de PHPMailer";
$mail->Body = "Hola Jim, bienvenido!!!";
$mail->IsHTML(true);
$mail->AddAddress("user@domain.com", "User Name");
$mail->Send();
?>

Entonces si deseamos enviar una página, deberíamos tener el contenido de esta página en una variable y luego asignársela a la propiedad Body como en el ejemplo anterior. Para lograr esto haremos uso de la función file_get_contents el cual devuelve el contenido de una archivo en una variable.

<?php
$body = file_get_contents('http://tuweb.com/file.html');
?>

Luego modificamos el código anterior para incluir por ejemplo la página de Google para enviarla, con lo cual nuestro código se transforma en:

<?php
require_once("class.phpmailer.php");
$body = file_get_contents('http://www.google.com/');
$mail = new PHPMailer();
$mail->From = "from@domain.com";
$mail->FromName = "From Name";
$mail->Subject = "Demo de PHPMailer";
$mail->Body = $body;
$mail->IsHTML(true);
$mail->AddAddress("user@domain.com", "User Name");
$mail->Send();
?>

Hay que tener en cuenta que para que la página seleccionada se envíe correctamente todas las rutas internas de la página deben ser absolutas, es decir si hay una imagen la imgen debe estar incluida de la forma:

<img src="https://www.jose-aguilar.com/photo.jpg" width="150" >

Envíate un email de ejemplo

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(7 votos, promedio: 5 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

6 respuestas a “Enviar emails con phpmailer”

  1. manuel dice:

    Saludos, amigo. Tengo un problema ya que necesito enviar email a unos contactos y he creado un archivo en php con uso de phpmailer,
    este es el código
    &lt;?php
    require_once(\\&quot;class.phpmailer.php\\&quot;);
    include_once(\\&quot;class.smtp.php\\&quot;);
    $mail = new PHPMailer();
    $mail-&gt;IsSMTP(); // send via SMTP
    //$mail-&gt;SMTPSecure = \\&quot;ssl\\&quot;;
    $mail-&gt;SMTPAuth = true; // turn on SMTP authentication
    $mail-&gt;Host = \\&quot;smtp.gmail.com\\&quot;;
    $mail-&gt;Port = 25; //——-&gt; 587
    $mail-&gt;From = \\&quot;jmreyesa@gmail.com\\&quot;;
    $mail-&gt;FromName = \\&quot;Nombre del Remitente\\&quot;;
    $mail-&gt;Subject = \\&quot;Subject del correo\\&quot;;
    $mail-&gt;AddAddress(\\&quot;adafd@hotmail.com\\&quot;,\\&quot;Nombre 01\\&quot;);
    $mail-&gt;AddCC(\\&quot;manuelalejandroreyes@gmail.com\\&quot;);
    $mail-&gt;AddBCC(\\&quot;atagum@gmail.com\\&quot;);
    $body = \\&quot;Hola &lt;strong&gt;amigo&lt;/strong&gt;&lt;br&gt;\\&quot;;
    $body .= \\&quot;probando &lt;i&gt;PHPMailer&lt;i&gt;.&lt;br&gt;&lt;br&gt;\\&quot;;

    $body .= \\&quot;&lt;font color=\\\’red\\\’&gt;Saludos&lt;/font&gt;\\&quot;;

    $mail-&gt;Body = $body;
    $mail-&gt;AltBody = \\&quot;Hola amigo\\\\nprobando PHPMailer\\\\n\\\\nSaludos\\&quot;;
    $mail-&gt;AddAttachment(\\&quot;images/foto.jpg\\&quot;, \\&quot;foto.jpg\\&quot;);
    $mail-&gt;AddAttachment(\\&quot;files/demo.zip\\&quot;, \\&quot;demo.zip\\&quot;);
    if(!$mail-&gt;Send())
    {
    echo \\&quot;&lt;table width=945 border=0 align=center&gt;\\&quot;;
    echo \\&quot;&lt;tr&gt;&lt;td align=center&gt;&lt;i&gt;&lt;font color=#HHgg45 size=5&gt;Error al Enviar email: &lt;/font&gt;&lt;/i&gt;\\&quot;. $mail-&gt;ErrorInfo;
    echo \\&quot;&amp;nbsp;&amp;nbsp;&lt;a href=induccion.php tabindex=25&gt;&lt;i&gt;&lt;font color=#HHgg45 size=5&gt;Regresar&lt;/font&gt;&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;\\&quot;;
    echo \\&quot;&lt;/table&gt;\\&quot;;
    exit;
    echo \\&quot;Mailer Error: \\&quot; . $mail-&gt;ErrorInfo;
    }
    else
    {
    echo \\&quot;&lt;table width=995 border=0 align=center&gt;\\&quot;;
    echo \\&quot;&lt;tr&gt;&lt;td align=center&gt;&lt;i&gt;&lt;font color=#HHgg45 size=5&gt; Su Clave ha sido Enviada, Exitosamente a: $email…&lt;/font&gt;&lt;/i&gt;\\&quot;;
    echo \\&quot;&lt;tr&gt;&lt;td align=center&gt;&lt;i&gt;&lt;font color=#HHgg45 size=5&gt; Tiene 15 días para Ratificar su Inscripción…&lt;/font&gt;&lt;/i&gt;\\&quot;;
    echo \\&quot;&amp;nbsp;&amp;nbsp;&lt;a href=induccion.php tabindex=25&gt;&lt;i&gt;&lt;font color=#CCCC00 size=5&gt; Regresar&lt;/font&gt;&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;\\&quot;;
    echo \\&quot;&lt;/table&gt;\\&quot;;
    }
    ?&gt;
    y cuando lo ejecuto sale el mensaje Fatal error: Maximum execution time of 120 seconds exceeded in C:\\\\wamp\\\\www\\\\sistmed\\\\class.smtp.php on line 1025. Agradezco su ayuda…

    • Jose Aguilar dice:

      Hola amigo buenas tardes,

      veo varios detalles en tu código:
      – No veo un bucle para enviar a los x amigos…
      – Si estás ejecutando ese código en un servidor local como wamp no debería funcionar ya que los servidores alojados en el disco duro no permiten enviar emails.

      Saludos,

  2. manuel dice:

    Saludos, amigo. Tengo un problema ya que necesito enviar email a unos contactos y he creado un archivo en php con uso de phpmailer,
    este es el código
    <?php
    require_once(\"class.phpmailer.php\");
    include_once(\"class.smtp.php\");
    $mail = new PHPMailer();
    $mail->IsSMTP(); // send via SMTP
    //$mail->SMTPSecure = \"ssl\";
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Host = \"smtp.gmail.com\";
    $mail->Port = 25; //——-> 587
    $mail->From = \"jmreyesa@gmail.com\";
    $mail->FromName = \"Nombre del Remitente\";
    $mail->Subject = \"Subject del correo\";
    $mail->AddAddress(\"adafd@hotmail.com\",\"Nombre 01\");
    $mail->AddCC(\"manuelalejandroreyes@gmail.com\");
    $mail->AddBCC(\"atagum@gmail.com\");
    $body = \"Hola <strong>amigo</strong><br>\";
    $body .= \"probando <i>PHPMailer<i>.<br><br>\";

    $body .= \"<font color=\’red\’>Saludos</font>\";

    $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\");
    if(!$mail->Send())
    {
    echo \"<table width=945 border=0 align=center>\";
    echo \"<tr><td align=center><i><font color=#HHgg45 size=5>Error al Enviar email: </font></i>\". $mail->ErrorInfo;
    echo \"&nbsp;&nbsp;<a href=induccion.php tabindex=25><i><font color=#HHgg45 size=5>Regresar</font></i></a></td></tr>\";
    echo \"</table>\";
    exit;
    echo \"Mailer Error: \" . $mail->ErrorInfo;
    }
    else
    {
    echo \"<table width=995 border=0 align=center>\";
    echo \"<tr><td align=center><i><font color=#HHgg45 size=5> Su Clave ha sido Enviada, Exitosamente a: $email…</font></i>\";
    echo \"<tr><td align=center><i><font color=#HHgg45 size=5> Tiene 15 días para Ratificar su Inscripción…</font></i>\";
    echo \"&nbsp;&nbsp;<a href=induccion.php tabindex=25><i><font color=#CCCC00 size=5> Regresar</font></i></a></td></tr>\";
    echo \"</table>\";
    }
    ?>
    y cuando lo ejecuto sale el mensaje Fatal error: Maximum execution time of 120 seconds exceeded in C:\\wamp\\www\\sistmed\\class.smtp.php on line 1025. Agradezco su ayuda…

  3. manuel dice:

    Saludos, amigo. Tengo un problema ya que necesito enviar email a unos contactos y he creado un archivo en php con uso de phpmailer,
    este es el código
    IsSMTP(); // send via SMTP
    //$mail->SMTPSecure = «ssl»;
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Host = «smtp.gmail.com»;
    $mail->Port = 25; //——-> 587
    $mail->From = «jmreyesa@gmail.com»;
    $mail->FromName = «Nombre del Remitente»;
    $mail->Subject = «Subject del correo»;
    $mail->AddAddress(«adafd@hotmail.com»,»Nombre 01″);
    $mail->AddCC(«manuelalejandroreyes@gmail.com»);
    $mail->AddBCC(«atagum@gmail.com»);
    $body = «Hola amigo«;
    $body .= «probando PHPMailer.»;

    $body .= «Saludos»;

    $mail->Body = $body;
    $mail->AltBody = «Hola amigonprobando PHPMailernnSaludos»;
    $mail->AddAttachment(«images/foto.jpg», «foto.jpg»);
    $mail->AddAttachment(«files/demo.zip», «demo.zip»);
    if(!$mail->Send())
    {
    echo «»;
    echo «
    Error al Enviar email: «. $mail->ErrorInfo;
    echo »  Regresar«;
    echo «»;
    exit;
    echo «Mailer Error: » . $mail->ErrorInfo;
    }
    else
    {
    echo «»;
    echo « Su Clave ha sido Enviada, Exitosamente a: $email…«;
    echo « Tiene 15 días para Ratificar su Inscripción…«;
    echo »   Regresar«;
    echo «»;
    }
    ?>
    y cuando lo ejecuto sale el mensaje Fatal error: Maximum execution time of 120 seconds exceeded in C:wampwwwsistmedclass.smtp.php on line 1025. Agradezco su ayuda…

  4. Aubrey Artale dice:

    Thank you for your website post. Brown and I happen to be saving for a new guide on this topic and your short article has made us to save money. Your ideas really responded to all our issues. In fact, in excess of what we had acknowledged prior to when we came upon your excellent blog. I no longer nurture doubts and also a troubled mind because you have attended to all of our needs in this article. Thanks

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Ver más sobre