Ver Mensaje Individual
  #8 (permalink)  
Antiguo 25/12/2011, 22:21
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Formulario php fail

En primer lugar le hago una aclaración a @carlos_belisario, en tanto esté recibiendo algunas de estas respuestas
550 relaying denied, 572 relay not authorized, 554 relay access denied

Basicamente significa que el administrador del smtp donde tiene registrada su cuenta tiene configurado el mismo para denegar el servicio de relay, que es lo que permite el intercambio de correos entre los diferentes servidores. Esto lo hacen habitualmente para prevenir el spam, la restricción puede ser que solo puedas enviar correos desde una PC en la propia red, ó lo que es más probable, te exija una forma de autentificación.

la función de php mail(), usa como primer parámetro el "to", es decir la dirección de correo a la que se envía, supongamos e el ejemplo [email protected] , el valor de from: sería $_POST['mail'], que es lo que el usuario ingresó en el formulario, y se usa para construir el encabezado (headers), y debería tener un formato válido (hay que hacer la correspondiente validación en el php.

@elcanalla86:
Ahora, para mandar mensajes desde tu localhost con php, lo que deberías hacer es:

Primero descargarte http://glob.com.au/sendmail/
Descomprimis el zip en, por ejemplo
c:/sendmail
El paso siguiente es configurar el archivo sendmail.ini (incluido en el zip)
entre otras cosas vas a encontrarte con esto
auth_username=
auth_password=
donde tenes que poner
[email protected]
auth_password=tupassword


El resto de los valores están bien explicados, pero no todos son obligatorios
los que deberias completar son
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=xxxxxxx
hostname=gmail.com

como verás uso una cuenta de gmail, vos deberás pòner los que correspondan a tu server y tu cuenta, los archivos .log se crean en la misma carpeta, y son buenos para analizar posibles fallos.
Un detalle, ejecutándose en Windows 7, sendmail.exe, si hay un error en el envio, falla y porduce un error , y win 7 genera una advertencia y te pide cerrar la aplicación, asi y todo, vas a ver en el navegador la leyenda "mensaje enviado" de tu php, es decir para mail(), el resultado es true, con solo haberse comunicado con con sendmail.exe, de ninguna manera verifica si el envio se hizo (digo esto porque no se en xp hace lo mismo, me parece que no te da opcion a cerrarla y hay que ir al administrador de tareas para eso). Para hacer ese tipo de comprobaciones tenes que usar librerías como phpmailer, que incluyen clases mas avanzadas que utilizan una conexión directa con tu smtp.


una vez hecho esto, abris el archivo php.ini y buscas la seccion mail function

Código INI:
Ver original
  1. [mail function]
  2. ; For Win32 only.
  3. ; http://php.net/smtp
  4. SMTP = localhost
  5. ; http://php.net/smtp-port
  6. smtp_port = 25
  7.  
  8. ; For Win32 only.
  9. ; http://php.net/sendmail-from
  10. sendmail_from = [email protected]
  11.  
  12. ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
  13. ; http://php.net/sendmail-path
  14. sendmail_path = "C:\sendmail\sendmail"

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.