Foros del Web » Programando para Internet » PHP »

Uso de mail( )

Estas en el tema de Uso de mail( ) en el foro de PHP en Foros del Web. Que tal, tengo levantado un servidor en mi máquina, instalé esos packs php+apache+phpmyadmin+mysql y tengo un formulario que pide nombre, mail y descripción: Código HTML: ...
  #1 (permalink)  
Antiguo 12/03/2009, 11:04
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 0
Uso de mail( )

Que tal, tengo levantado un servidor en mi máquina, instalé esos packs php+apache+phpmyadmin+mysql y tengo un formulario que pide nombre, mail y descripción:


Código HTML:
<html>
<body>
<form action="procesar.php" method="post">
Nombre:<input type="text" name="nombre"></br>
Email:<input type="text" name="email"></br>
Consulta:<textarea name="descripcion" rows="10" cols="40"></textarea></br>
<input type="submit" value="Enviar Consulta">
</body>
</html> 
y después el archivo php que lo procesa:

Código PHP:
<?php
$nombre
=$_POST['nombre'];
$email=$_POST['email'];
$descripcion=$_POST['descripcion'];
$mensaje="Consulta:".$descripcion;
$destino="[email protected]";
$asunto="Consulta inmobiliaria";
mail($destino,$asunto,$mensaje,$nombre);
?>
En el archivo de configuración php.ini tengo:


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

; For Win32 only.
;sendmail_from = [email protected]

traté de configurarlo para que use el smtp de gmail pero no me funciona, se puede usar un smtp externo para realizar el envio? sino como hago para que funcione???

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\EasyPHP 3.0\www\procesar.php on line 4

Me sale ese warning, les agradecería mucho su ayuda...Un saludo

Última edición por juanf03; 12/03/2009 a las 11:15
  #2 (permalink)  
Antiguo 12/03/2009, 11:25
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 21 años, 1 mes
Puntos: 24
Respuesta: Uso de mail( )

Te falta instalar un servidor smtp
  #3 (permalink)  
Antiguo 12/03/2009, 11:59
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Uso de mail( )

alguno en particular recomiendan??. Me podrías dar algunas indicaciones de como llegar a montarlo y que todo funcione correctamente?, soy novato en esto...
  #4 (permalink)  
Antiguo 12/03/2009, 12:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Uso de mail( )

Sigue el enlace que te dejo lisandro Arg, encontraras bastantes opciones.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 12/03/2009, 12:16
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Uso de mail( )

no puedo usar el smtp de google por ejemplo para enviarle los mails a la gente??
  #6 (permalink)  
Antiguo 12/03/2009, 12:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Uso de mail( )

Para eso usas PHPMailer y creo que en http://www.forosdelweb.com/f18/aport...as-php-569025/ hay algunos ejemplos de esto.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 12/03/2009, 12:25
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Uso de mail( )

y con la función mail( ) tengo que si o si tener que tener un smtp "interno"???, si pueden ser un poco mas explicativos mejor...
  #8 (permalink)  
Antiguo 12/03/2009, 12:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Uso de mail( )

Si, la funcion mail depende de que exista un servidor SMTP local disponible para realizar el envio. Si estas haciendo un script en localhost que despues vas a subir a algun servidor no sera necesario que instales un SMTP, solo haz pruebas que funcionen en tu servidor.

A tu script le faltarian algunos encabezados para poder realizar el envio, te dejo un ejemplo:

Código php:
Ver original
  1. $from_name = 'Nombre';
  2. $from_mail = '[email protected]';
  3.  
  4. $headers = array();
  5. $headers[] = "From: $from_name <$from_mail>";
  6. $headers[] = 'Reply-To: ' . $from_mail;
  7. $headers[] = 'Return-Path: <' . $from_mail . '>';
  8. $headers[] = 'Sender: <' . $from_mail . '>';
  9. $headers[] = 'MIME-Version: 1.0';
  10. $headers[] = 'Date: ' . date('r', time());
  11. $headers[] = 'Content-Type: text/html; charset=iso-8859-1'; // format=flowed
  12. $headers[] = 'Content-Transfer-Encoding: 8bit'; // 7bit
  13.  
  14. $headers = implode("\n", $headers);
  15.  
  16. // Convertir todo a html y crear enlaces en URL's y direcciones de email
  17. $body = "<html><body><p>$message</body></html>";
  18. $body = nl2br($body);
  19. $body = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="\\1">\\1</a>', $body);
  20. $body = eregi_replace('([[:space:]()[{}])([url]www.[-a-zA-Z0-9@:%_\+.~#?&//=]+[/url])', '\\1<a href="http://\\2">\\2</a>', $body);
  21. $body = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})', '<a href="mailto:\\1">\\1</a>', $body);
  22.  
  23. // Enviar el correo
  24. if(@mail('[email protected]', 'asunto del mensaje', wordwrap($body), $headers))
  25.     echo 'Mensaje enviado correctamente';
  26. else
  27.     echo 'Mensaje no enviado';
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 12/03/2009, 14:12
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Uso de mail( )

Ya instalé el mini relay, tuve 2 problemas:

a)mandé a gmail y me llega a la carpeta de spam. Además tarda como 4 minutos en llegar...

b)mandé a Hotmail y dice el programa que no puede enviarlo porque va contra la política de msn live(estoy haciendo un trabajo para un cliente y necesito que si el cliente establece una dirección de mail de hotmail funcione también).El mini-relay me tira el siguiente error:

Error DY-001 Mail rejected by Windows Live Hotmail for policy reasons. We generally do not accept email from dynamic IP's as they are not typically used to deliver unauthenticated SMTP e-mail to an Internet mail server. http://www.spamhaus.org maintains lists of dynamic and residential IP addresses. If you are not an email/network admin please contact your E-mail/Internet Service Provider for help. Email/network admins, please visit http://postmaster.live.com for email delivery information and support

pero mi ip no es dinámica, así que no se que puede ser...


como soluciono esto??
  #10 (permalink)  
Antiguo 12/03/2009, 14:20
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Uso de mail( )

Cita:
http://www.spamhaus.org maintains lists of dynamic and residential IP addresses
No es tanto porque tu IP sea dinamica, mas bien, que es reconocida como residencial.

Edito:

Soluciones:
1- Envia solo desde un servidor
2- Usa PHPMailer con SMTP de Gmail
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 12/03/2009, 14:29
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Uso de mail( )

pero como hago para enviar "solo desde un servidor? me podrías dar instrucciones mas detalladas?? porque soy novato...
  #12 (permalink)  
Antiguo 12/03/2009, 14:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Uso de mail( )

Me refiero a un servidor de webhost y no a tu pc local... si el plan no es contratar servidor, entonces tendras que recurrir a la segunda opcion.
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 12/03/2009, 14:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Uso de mail( )

Se refiere a que subas tu script a un hosting verdadero y de ahí hagas el envio en su server. Si quieres probar desde local necesitas entonces configurar el miniRelay y poner el SMTP de tu hosting, o usar el de Google.

En lo particular te recomiendo usar PHPMailer, es un poco más complejo pero a la larga verás que es más sencillo por todos los beneficios que tiene.
  #14 (permalink)  
Antiguo 12/03/2009, 15:04
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Uso de mail( )

ahí bajé el phpmail y tengo el archivo de configuración así:

[mail function]
; For Win32 only.
SMTP = 127.0.0.1
smtp_port = 25

; For Win32 only.
;sendmail_from = [email protected]
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

esto último del archivo de configuración no tiene nada que ver con phpmail no???, o si????, o sirve solo para la funcion mail( )???....


y un script de prueba:
Código PHP:
<?php
include("C:\Program Files\EasyPHP 3.0\www\phpMailer/class.phpmailer.php");
$mail=new PHPMailer();
$mail->Host "localhost";
$mail->From "[email protected]";
$mail->FromName "Nombre del Remitente";
$mail->Subject "Subject del correo";
$mail->AddAddress("[email protected]","Nombre 01");
$mail->Body="Probando PHPmailer";
$mail->Send();
?>
Eso mientras tengo abierto el mini-relay, en el cual esta configurado el puerto 25, pero el mini relay me tira error, me dice lo mismo que me decía con hotmail......
Alguien me puede decir lo que tengo que poner para que llegue bien a destino el mail???

Última edición por juanf03; 12/03/2009 a las 15:11
  #15 (permalink)  
Antiguo 12/03/2009, 15:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Uso de mail( )

Desde miniRelay NO vas a poder enviar a hotmail, la razón ya te la pusieron arriba, para eso en dado caso vas a tener que probar usar el script en un servidor.

Saludos.
  #16 (permalink)  
Antiguo 12/03/2009, 15:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Uso de mail( )

http://www.forosdelweb.com/f18/metod...otmail-630896/

Revisa ese tema, usa PHPMailer con SMTP de gmail.
__________________
- León, Guanajuato
- GV-Foto
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 13:13.