Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/10/2010, 12:36
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Problemas con mail()

Algadar:

Ya lo solucioné.
Hay dos opciones, que instales un servidor smtp (que es un poco más complicado, y no creo que se justifique, o utilizar la versión para windows de Sendmail, que emula el comportamiento de sendmail en Unix.


primero tenes que descargarte desde http://glob.com.au/sendmail/ el sendmail.zip (yo ya lo estaba usando, pero revisé y esta versión corrije el tema de enviar email sobre SSL.
Descomprimí el contenido en, por ejemplo
C:\sendmail
abri con el editor de texto "sendmail.ini" que se encuentra en esa carpeta, en ese archivo las lineas que comienzan con ; son comentarios

aca tengo una duda, al leer tu post veo que como smtp estas usando gmail (que utiliza el puerto 465), pero la cuenta que utilizas es '[email protected]', que obviamente no es de Gmail,
te voy a pasar las dos configuraciones


si usas una cuenta de gmail:

sendmail.ini:

[sendmail]

smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=auto
default_domain=gmail.com
error_logfile=error.log
debug_logfile=debug.log

[email protected]
auth_password=tuclavedegmail

; la que sigue force_sender, si tu php no tiene un campo $from ó $de
; que sería el email ingresado en el form, tenes que completarla con tu
; dirección de eamil, si no, dejala comentada

;force_sender=

;en la que sigue poné el nombre de tu dominio si lo tenes
; nunca pongas "localhost", si no, ponele gmail.com
hostname=gmail.com


php.ini: (todo comentado menos sendmail_path

[mail function]
; For Win32 only.
;SMTP = smtp.gmail.com
;smtp_port = 465

; For Win32 only.
;sendmail_from [email protected]

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

si no usas una cuenta de gmail (supongamos usas [email protected]):

[sendmail]
; puede cambiar, fijate cual es el smtp de grupometropolitano
; podria ser mail.grupometropolitano.com
smtp_server=smtp.grupometropolitano.com

; si no usa ssl seguramente será 25 el puerto
smtp_port=25


smtp_ssl=auto
default_domain=grupometropolitano.com
error_logfile=error.log
debug_logfile=debug.log

[email protected]
auth_password=tuclavedegrupometropolitanol

; la que sigue force_sender, si tu php no tiene un campo $from ó $de
; que sería el email ingresado en el form, tenes que completarla con tu
; dirección de eamil, si no, dejala comentada

;force_sender=

;en la que sigue poné el nombre de tu dominio si lo tenes
; nunca pongas "localhost", si no, ponele gmail.com
hostname=grupometropolitano.com


el php.ini, queda igual


No verifiqué tu script, podés`probar con la que sigue que funciona


Código PHP:
Ver original
  1. <?php
  2. $aviso = "";
  3. if ($_POST['email'] != "") {
  4. $msj = $_POST['msj'];
  5.     // email de destino
  6.     $email = "[email protected]";  #####poner aqui el email al que se quiere que llegue el form
  7.     // asunto del email
  8.     $asunto = "Formulario desde la Web ";
  9. ########################## 
  10.  
  11. $para      = "$email ";
  12. $titulo = "$asunto";
  13. $mensaje = "NOMBRE: " . $_POST['nombre'] . "\r\n";
  14. $mensaje .= "APELLIDO: " . $_POST['apellido'] . "\r\n\r\n";
  15. $mensaje .= "EMAIL: " . $_POST['email'] . "\r\n";
  16. $mensaje .= "--------------------------------------------------------------\r\n";
  17. $mensaje .= "$msj";
  18. $mensaje .= "\r\n--------------------------------------------------------------\r\n";
  19. $cabeceras = "From: " . $_POST['email'] . "\r\n" .
  20.     "Reply-To: no-reply" . "\r\n" .
  21.     'X-Mailer: PHP/' . phpversion() ."\r\n" . "Content-type: text/plain; charset='utf-8'";
  22.  
  23. $m =mail($para, $titulo, $mensaje, $cabeceras);
  24.     if ($m) {
  25.         $aviso = "Su mensaje fue enviado correctamente";
  26.     } else {
  27.         $aviso = "Error al enviar";
  28.     }
  29.  
  30. }
  31. ?>
  32. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  33. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  34. <html xmlns="http://www.w3.org/1999/xhtml">
  35. <head>
  36. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  37. <title>Formulario</title>
  38.  
  39. </head>
  40. <body>
  41. <h2>Formulario</h2>
  42. <?php if ($aviso != "") { ?>
  43. <p><em><?php echo $aviso; ?></em></p>
  44. <?php } ?>
  45. <form action="" method="post">
  46.     <label for="nombre">Nombres</label> <input name="nombre" id="nombre" type="text" /><br />
  47.     <label for="empresa">Empresa</label> <input name="empresa" id="empresa" type="text" /><br />
  48.     <label for="email">Email</label> <input name="email" id="email" type="text" /><br />
  49.     <label for="mensaje">Comentario</label> <textarea name="msj" cols="30" rows="6" id="mensaje"></textarea><br />
  50.     <label for="envio">&nbsp;</label> <button name="envio" id="envio" type="submit">Enviar</button>
  51. </form>
  52. </body>
  53. </html>


en la carpeta c:\sendmail se van generar los archivos "debug.log" y "error.log", (si los hubiera) que te dan valiosa información sobre el proceso.

Recordá que siempre tras editar php.ini tenés que reiniciar el Apache.
Y por último, asegurate que tu furewall no bloquee a sendmail.exe, o nada te va a funcionar
Otro detalle que recorde ahora, algunos servidores de correo te piden que hagas pop antes de enviar con smtp, en ese caso en sendmail.ini, las lineas

;pop3_server=
;pop3_username=
;pop3_password=


tenés que descomentarlas y completar los valores (para gmail al menos, mno hace falta.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.