Foros del Web » Programando para Internet » PHP »

Enviar correos desde localhost

Estas en el tema de Enviar correos desde localhost en el foro de PHP en Foros del Web. Buen dia foro Tengo un problema al tratar de enviar un correo con PHPMAILER encontre que esa clase ayuda enviar correos con adjuntos desde php ...
  #1 (permalink)  
Antiguo 19/12/2012, 12:45
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Enviar correos desde localhost

Buen dia foro

Tengo un problema al tratar de enviar un correo con PHPMAILER
encontre que esa clase ayuda enviar correos con adjuntos desde php pero no me funciona no envia los correo alguien sabe como hacerlo este s mi codigo:

Código PHP:
Ver original
  1. require('phpMail/class.phpmailer.php');
  2.  
  3. $mail = new PHPMailer();
  4.        
  5.         //Nombre del servidor
  6.         $mail->Host = "localhost";
  7.         //Email del remitente
  8.         $mail->From = "[email protected]";
  9.         //Nombre del remitente
  10.         $mail->FromName = "Juan perez";
  11.         //Asunto
  12.         $mail->Subject = "Factura electronica";
  13.         //Email y nombre destinatario
  14.         $mail->AddAddress("[email protected]","Alejandro");
  15.        
  16.         //Adjuntando HTML
  17.         $body = $mail->getFile('phpMail/examples/contents.html');
  18.        
  19.         //Adjuntando archivo
  20.         $mail->AddAttachment("images/leyenda.jpg", "leyenda.jpg");
  21.        
  22.         $mail->IsHTML(true);
  23.         $mail->MsgHTML($body);
  24.  
  25.         //Enviar
  26.         $mail->Send();

alguien sabe porke no envia los correos

de antemano muchas gracias
__________________
Lo imposible solo cuesta un poco mas
  #2 (permalink)  
Antiguo 19/12/2012, 13:28
Avatar de kolom  
Fecha de Ingreso: septiembre-2008
Mensajes: 85
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Enviar correos desde localhost

Para poder enviar un correo des de localhost tienes dos opciones:

1- Instalarte un servidor de correo en local
2- Utilizar un smtp externo para enviar el correo como puede ser gmail

La clase phpmailer permite configurar un servidor smtp facilmente, aqui te dejo un ejemplo de configuración:

Código PHP:
require_once 'class.phpmailer.php';
 
$mail = new PHPMailer ();


$mail->IsSMTP();
$mail->Host 'ssl://smtp.gmail.com';
$mail->Port 465;
$mail->SMTPAuth true;
$mail->Username '[email protected]';
$mail->Password '*****';

 
$mail -> From '[email protected]';
$mail -> FromName 'Juan perez';
$mail -> AddAddress ("[email protected]");
$mail -> Subject "Factura electronicao";

$mail->Body 'mensaje...';
 
$mail->Send(); 
Espero que te sirva
__________________
Regalos con encanto
  #3 (permalink)  
Antiguo 19/12/2012, 13:52
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Enviar correos desde localhost

Gracias por contestar

hice lo que me dijiste y me retorna este error

Language string failed to load: connect_host

a que se debe
__________________
Lo imposible solo cuesta un poco mas
  #4 (permalink)  
Antiguo 19/12/2012, 14:17
Avatar de kolom  
Fecha de Ingreso: septiembre-2008
Mensajes: 85
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Enviar correos desde localhost

En la documentación oficial tienes un ejemplo de como enviar mediante gmail:

http://phpmailer.worxware.com/index.php?pg=examplebgmail

Espero que este código si te sirva.
__________________
Regalos con encanto
  #5 (permalink)  
Antiguo 19/12/2012, 14:35
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Enviar correos desde localhost

Estás trabajando en windows?

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 19/12/2012, 14:38
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Enviar correos desde localhost

asi es en windows
__________________
Lo imposible solo cuesta un poco mas
  #7 (permalink)  
Antiguo 19/12/2012, 14:54
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Enviar correos desde localhost

Cita:
Iniciado por jandrogdz Ver Mensaje
asi es en windows
Descargá sendmail desde aqui
http://glob.com.au/sendmail/

descomprimi el ejecutable en una carpeta, ej C:\sendmail

luego, es php.ini, en la sección mail

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = [email protected]

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "C:\sendmail\sendmail"

la linea en negritas es la ruta en la que descomprimiste el ejecutable
luego, en esa carpeta vas a encontrar un archivo llamado sendmail.ini, completalo con los valores requeridos, te dejo el mio de ejemplo



Código INI:
Ver original
  1. ; configuration for fake sendmail
  2.  
  3. ; if this file doesn't exist, sendmail.exe will look for the settings in
  4. ; the registry, under HKLM\Software\Sendmail
  5.  
  6. [sendmail]
  7.  
  8. ; you must change mail.mydomain.com to your smtp server,
  9. ; or to IIS's "pickup" directory.  (generally C:\Inetpub\mailroot\Pickup)
  10. ; emails delivered via IIS's pickup directory cause sendmail to
  11. ; run quicker, but you won't get error messages back to the calling
  12. ; application.
  13.  
  14. smtp_server=smtp.gmail.com
  15. ; smtp port (normally 25)
  16.  
  17. smtp_port=465
  18. ;smtp_port=25
  19.  
  20. ; SMTPS (SSL) support
  21. ;   auto = use SSL for port 465, otherwise try to use TLS
  22. ;   ssl  = alway use SSL
  23. ;   tls  = always use TLS
  24. ;   none = never try to use SSL
  25.  
  26. smtp_ssl=auto
  27. ;smtp_ssl=none
  28.  
  29. ; the default domain for this server will be read from the registry
  30. ; this will be appended to email addresses when one isn't provided
  31. ; if you want to override the value in the registry, uncomment and modify
  32.  
  33. default_domain=gmail.com
  34. ; log smtp errors to error.log (defaults to same directory as sendmail.exe)
  35. ; uncomment to enable logging
  36.  
  37. error_logfile=error.log
  38.  
  39. ; create debug log as debug.log (defaults to same directory as sendmail.exe)
  40. ; uncomment to enable debugging
  41.  
  42. debug_logfile=debug.log
  43.  
  44. ; if your smtp server requires authentication, modify the following two lines
  45.  
  46. auth_username=[email protected]
  47. auth_password=tuclave
  48.  
  49.  
  50.  
  51. ; if your smtp server uses pop3 before smtp authentication, modify the
  52. ; following three lines.  do not enable unless it is required.
  53.  
  54. ;pop3_server=
  55. ;pop3_username=
  56. ;pop3_password=
  57.  
  58. ; force the sender to always be the following email address
  59. ; this will only affect the "MAIL FROM" command, it won't modify
  60. ; the "From: " header of the message content
  61.  
  62. ;force_sender=
  63.  
  64. ; force the sender to always be the following email address
  65. ; this will only affect the "RCTP TO" command, it won't modify
  66. ; the "To: " header of the message content
  67.  
  68. ;force_recipient=
  69.  
  70. ; sendmail will use your hostname and your default_domain in the ehlo/helo
  71. ; smtp greeting.  you can manually set the ehlo/helo name if required
  72.  
  73. hostname=gmail.com

en mi caso, que uso gmail, tengo habilitado el puerto 465 para smtp, ya que usa ssl.
Para finalizar la clase phpMailer viene con una carpeta de ejemplos, testeá con alguno de ellos

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 19/12/2012, 15:40
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Enviar correos desde localhost

Me aparece este error

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\phpMailer\class.smtp.php on line 1024
__________________
Lo imposible solo cuesta un poco mas
  #9 (permalink)  
Antiguo 19/12/2012, 15:53
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Enviar correos desde localhost

Cita:
Iniciado por jandrogdz Ver Mensaje
Me aparece este error

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\phpMailer\class.smtp.php on line 1024
Te recomiendo que bajes la última versión

http://code.google.com/a/apache-extr...2.zip&can=2&q=

de hecho no existe la linea 1024 en class.smtp.php
además analizá los archivos log (debug y error) creados en la arpeta de sendmail, te pueden proporcionar información valiosa para detectar el fallo

Un comentario extra, a veces en win7 si hubo un fallo en el envío te puede aparecer una alerta "sendmail.ese ha dejado de funcionar...." simplemente dale a "cerrar la aplicación" y detectá el error en la script y repetí el envío

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #10 (permalink)  
Antiguo 19/12/2012, 16:09
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Pregunta Respuesta: Enviar correos desde localhost

ya cambie la version por la que me pasaste y ahora me arroja esto:

SMTP server error: 5.5.1 Authentication Required. Learn more at 530 5.5.1 http://support.google.com/mail/bin/a...y?answer=14257 l35sm5778162yhi.12
__________________
Lo imposible solo cuesta un poco mas
  #11 (permalink)  
Antiguo 19/12/2012, 16:28
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Enviar correos desde localhost

completaste tus datos en
[email protected]
auth_password=tuclave

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #12 (permalink)  
Antiguo 19/12/2012, 16:39
Avatar de jandrogdz  
Fecha de Ingreso: julio-2012
Ubicación: public $Guadalajara
Mensajes: 397
Antigüedad: 11 años, 9 meses
Puntos: 12
Respuesta: Enviar correos desde localhost

si ya los hice pero sigue mostrando el mismo error
__________________
Lo imposible solo cuesta un poco mas
  #13 (permalink)  
Antiguo 19/12/2012, 18:34
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Enviar correos desde localhost

Estuve viendo la versión 5.2 y tiene algunos errores en los ejemplos
Pone este script en la carpeta examples y probalo

Código HTML:
Ver original
  1. <title>PHPMailer - Mail() basic test</title>
  2. </head>
  3.  
  4. <?php
  5.  
  6. require_once('../class.phpmailer.php');
  7.  
  8. $mail             = new PHPMailer(); // defaults to using php "mail()"
  9.  
  10. $body             = file_get_contents('contents.html');
  11. //$body             = preg_replace('/[\]/','',$body);
  12.  
  13. $mail->SetFrom('[email protected]', 'First Last');
  14.  
  15. $mail->AddReplyTo("[email protected]","First Last");
  16.  
  17. $address = "[email protected]";
  18. $mail->AddAddress($address, "John Doe");
  19.  
  20. $mail->Subject    = "PHPMailer Test Subject via mail(), basic_a";
  21.  
  22. $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
  23.  
  24. $mail->MsgHTML($body);
  25.  
  26. $mail->AddAttachment("images/phpmailer.gif");      // attachment
  27. $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
  28.  
  29. if(!$mail->Send()) {
  30.   echo "Mailer Error: " . $mail->ErrorInfo;
  31. } else {
  32.   echo "Message sent!";
  33. }
  34.  
  35. ?>
  36.  
  37. </body>
  38. </html>

solo reemplazá en la linea
$address = "[email protected]";
con el email al que quieras que te llegue

Te aclaro que teniendo habilitado el sendmail no hace falta usar la clase php mailer, con solo esto

Código PHP:
Ver original
  1. <?php
  2. $para = '[email protected]'; //modificar
  3. $asunto = 'Formulario desde la web';
  4. $headers = "From: [email protected]\r\n";
  5. $headers .= "MIME-Version: 1.0\r\n";
  6. $headers .= "Content-Type: text/html; charset=utf-8\r\n";
  7. $mensaje = "El texto del mensaje";
  8. $enviar = mail($para,$asunto,$mensaje,$headers);
  9. if(!$enviar){
  10. echo "error";
  11. }else{
  12. echo "mensaje enviado";
  13. }
  14. ?>

Por supuesto que la clase es mucho más flexible y te va a facilitar el envío de imágenes, adjuntos, etc
Ojo, si usas gmail tenes que ser muy detallado con los headers si no te lo rebota

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #14 (permalink)  
Antiguo 20/12/2012, 05:44
 
Fecha de Ingreso: diciembre-2012
Mensajes: 13
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Enviar correos desde localhost

En host solamente pondria smtp.gmail.com, y te falta el tipo de encriptacion "tls"

Etiquetas: correos, html, localhost
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 23:25.