Foros del Web » Programando para Internet » PHP »

Problema con sendmail (SOLUCIONADO)

Estas en el tema de Problema con sendmail (SOLUCIONADO) en el foro de PHP en Foros del Web. Hola amig@s, Comparto lo que hice para solucionar este tema que me mantuvo muy ocupado por demasiados días... puede servir para que alguién más optimice ...
  #1 (permalink)  
Antiguo 16/04/2014, 22:05
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 2 meses
Puntos: 1
Problema con sendmail (SOLUCIONADO)

Hola amig@s,

Comparto lo que hice para solucionar este tema que me mantuvo muy ocupado por demasiados días... puede servir para que alguién más optimice mejor tiempo.

PROCEDIMIENTO PARA ENVIO DE CORREO DESDE LOCALHOST CON PHPMAILER
(PROBADO EN INSTALACIONES DE WAMPSERVER 2.2 Y 2.4)


Antes de iniciar la descripción de los pasos que seguí para poder enviar correos desde mi localhost con SMTP y PHPMAILER, quiero agradecer las respuestas y sugerencias de los amigos de Foros del web que con su disposición a ayudar me animaron a seguir buscando hasta dar con la solución.

El empujón definitivo lo encontré en este enlace http://blog.techwheels.net/send-emai...g-wamp-server/ donde solo tuve que introducir unas pequeñas modificaciones (que por cierto no eran obvias para mi) en el archivo “send-email.php” para que todo funcionara.

Deben seguir cada uno de los pasos descritos en el enlace (la imágenes que incluye ayudan mucho). En particular sigan las instrucciones para agregar la extensión “php_smtp.dll” al php.

A continuación debemos apartarnos un poco de las instrucciones del enlace: Creen la carpeta “includes” bajo “C:/wamp/www/” y ahí copien los archivos “class.phpmailer.php” y “class.smtp.php” que extraigan del archivo “PHPMailer-master.zip” que pueden descargar desde https://github.com/PHPMailer/PHPMailer . EXTRAIGAN TAMBIEN el archivo PHPMailerAutoload.php y localícenlo en la carpeta “includes”.

Por último, creen el archivo “send-email.php” y localícenlo en la ruta
“C:/wamp/www/send-email.php”
… el código con que finalmente me funcionó para este archivo es:

Código PHP:
Ver original
  1. <?php
  2.   // primero hay que incluir la clase phpmailer para poder instanciar
  3.   //un objeto de la misma
  4.   require "includes/class.phpmailer.php";
  5.  
  6.   //instanciamos un objeto de la clase phpmailer al que llamamos
  7.   //por ejemplo mail
  8.   $mail = new phpmailer();
  9.  
  10.   //Definimos las propiedades y llamamos a los métodos
  11.   //correspondientes del objeto mail
  12.  
  13.   //Con PluginDir le indicamos a la clase phpmailer donde se
  14.   //encuentra la clase smtp que como he comentado al principio de
  15.   //este ejemplo va a estar en el subdirectorio includes
  16.   $mail->PluginDir = "includes/";
  17.  
  18. $mail->IsSMTP();
  19.  
  20.   //Con la propiedad Mailer le indicamos que vamos a usar un
  21.   //servidor smtp
  22.   $mail->Mailer = "smtp";
  23.  
  24.   //Asignamos a Host el nombre de nuestro servidor smtp (que en mi caso es Gmail)
  25.   $mail->Host = "smtp.gmail.com";
  26.  
  27. //Le indicamos que el servidor smtp requiere autenticación
  28. $mail->SMTPAuth = true;
  29.  
  30. //Le decimos cual es nuestro nombre de usuario y password  
  31.  
  32. $mail->Username = "[email protected]";
  33.  
  34. $mail->Password = "mi password";
  35. $mail->Port = 587;
  36. $mail->SMTPSecure = 'tls';
  37.  
  38.  
  39. //Indicamos cual es nuestra dirección de correo y el nombre que
  40.  
  41. //queremos que vea el usuario que lee nuestro correo
  42.  
  43. $mail->From = "[email protected]";
  44.  
  45. $mail->FromName = "UnNombre";
  46.  
  47. //el valor por defecto 10 de Timeout es un poco escaso dado que
  48.  
  49. //voy a usar una cuenta gratuita, por tanto lo pongo a 30
  50. $mail->Timeout=30;
  51.  
  52. //Indicamos cual es la dirección de destino del correo
  53.  
  54. $mail->AddAddress("[email protected]"); // me ha funcionado con Hotmail, Gmail y una cuenta webmail
  55.  
  56. //Asignamos asunto y cuerpo del mensaje
  57.  
  58. //El cuerpo del mensaje lo ponemos en formato html, haciendo
  59.  
  60. //que se vea en negrita
  61.  
  62. $mail->Subject = "Prueba de phpmailer";
  63.  
  64. $mail->Body = "<b>Mensaje de prueba en formato html</b>";
  65.  
  66. //Definimos AltBody por si el destinatario del correo
  67.  
  68. //no admite email con formato html
  69.  
  70. $mail->AltBody = "Mensaje de prueba en formato solo texto";
  71.  
  72. //se envia el mensaje, si no ha habido problemas
  73.  
  74. //la variable $exito tendra el valor true
  75.  
  76. $exito = $mail->Send();
  77.  
  78. //Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas
  79.  
  80. //como mucho para intentar enviar el mensaje, cada intento se hará 5
  81.  
  82. //segundos despues del anterior, para ello se usa la funcion sleep
  83.  
  84. $intentos=1;
  85.  
  86. while ((!$exito) && ($intentos < 5)) {  sleep(5);
  87.  
  88. //echo $mail->ErrorInfo;
  89.  
  90. $exito = $mail->Send();
  91.  
  92. $intentos=$intentos+1;
  93.  
  94. }
  95.  
  96. if(!$exito) {
  97.  
  98. echo "Problemas enviando correo electrónico a ";
  99.  
  100. echo "<br/>".$mail->ErrorInfo;
  101.  
  102. }
  103.  
  104. else {
  105.  
  106. echo "Mensaje enviado correctamente";  }
  107.  
  108. ?>

Etiquetas: html, sendmail, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:09.