Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Caster en 27 Diciembre 2011, 15:01 pm



Título: [Solucionado] Problema con enviar email
Publicado por: Caster en 27 Diciembre 2011, 15:01 pm
Estoy haciendo un  formulario para enviar un email a una direccion predefinida pero me da error, códigos:

formulario.php
Código
  1. <html>
  2. <body>
  3. <form action="enviar_c.php" method="post">
  4. <table width="200" heicht="200" border="0">
  5. <tr>
  6. <td>Asunto:</td>
  7. <td><input type="text" name="asunto" /></td>
  8. </tr>
  9. <tr>
  10. <td>Desde:</td>
  11. <td><input type="text" name="desde" /></td>
  12. </tr>
  13. <tr>
  14. <td>Mensaje:</td>
  15. <td><textarea name="mensaje"></textarea></td>
  16. </tr>
  17. <tr>
  18. <td></td>
  19. <td><input type="submit" value="enviar correo" /></td>
  20. </tr>
  21. </table>
  22. </body>
  23. </html>
  24.  

enviar_c.php:
Código
  1. <?php
  2. if(isset($_POST['asunto']) && !empty($_POST['asunto']) &&
  3.   isset($_POST['desde']) && !empty($_POST['desde']) &&
  4.   isset($_POST['mensaje']) && !empty($_POST['mensaje']))
  5. {
  6. $destinatario = "(noquieroponerelemail)";
  7. $asunto = $_POST['asunto'];
  8. $mensaje = $_POST['mensaje'];
  9.  
  10.  
  11.  
  12. mail($destinatario,$asunto,$mensaje);
  13.  
  14. echo "correro enviado";
  15. }else{
  16. echo "correro no enviado";
  17. }  
  18.  
  19. ?>

El error es el siguiente:
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing


Título: Re: Problema con enviar email
Publicado por: m0rf en 27 Diciembre 2011, 15:15 pm
No esta habilitada la función mail en php.ini.

Si es un servidor gratuito olvidate. Sinó habilitalo.

Saludos.


Título: Re: Problema con enviar email
Publicado por: Caster en 27 Diciembre 2011, 15:17 pm
Si, es gratuito, me descargué el AppServ


Título: Re: Problema con enviar email
Publicado por: m0rf en 27 Diciembre 2011, 15:31 pm
Yo hablaba si es un servidor de hosting gratuito.

Para configurarlo en tu servidor, instala un servidor de correo. Después en el archivo php.ini tienes que configurar que dirección o dominio utiliza tu servidor y poco más me parece.



Título: Re: Problema con enviar email
Publicado por: #!drvy en 27 Diciembre 2011, 16:17 pm
No tiene nada que ver, ademas la mayoría de los host gratuitos famosos (000webhost por ejemplo) permiten el envió de mails.

Lo que dice el error es que no tienes definido el header From.
Para hacerlo añade el header e incluye lo en mail().

Ejemplo:

Código
  1. <?php
  2. $para = 'papanoel@SantaClausVillage.org';
  3. $titulo = 'HDP dame mi juguete cabron!!!';
  4. $mensaje = 'QUE ME DES MI REGALO O ME CHIVO A LOS REYES MAGOS ¬¬';
  5. $headers = 'From: tucorreo@tudominio.com' . "\r\n" .
  6.    'Reply-To: tucorreo@tudominio.com';
  7. mail($para, $titulo, $mensaje, $headers);
  8. ?>
  9.  

PD: Bajo Windows las aplicaciones de servidores SMTP son una ***** total. En vez de instalar tu propio smtp utiliza por ejemplo el de Gmail.

Saludos


Título: Re: Problema con enviar email
Publicado por: m0rf en 27 Diciembre 2011, 16:20 pm
Ya decia yo que se me pasaba algo por alto >.<



Título: Re: Problema con enviar email
Publicado por: Caster en 27 Diciembre 2011, 16:24 pm
Este es el nuevo código:
Código
  1. <?php
  2. if(isset($_POST['asunto']) && !empty($_POST['asunto']) &&
  3.   isset($_POST['desde']) && !empty($_POST['desde']) &&
  4.   isset($_POST['mensaje']) && !empty($_POST['mensaje']))
  5. {
  6. $destinatario = "miemail";
  7. $asunto = $_POST['asunto'];
  8. $mensaje = $_POST['mensaje'];
  9. $headers = 'From tucorreo@tudominio.com' . "\r\n" .
  10. 'Reply-To: tucorreo@tudominio.com';
  11.  
  12.  
  13.  
  14. mail($destinatario,$asunto,$mensaje,$headers);
  15.  
  16. echo "correro enviado";
  17. }else{
  18. echo "correro no enviado";
  19. }  
  20.  
  21. ?>

Sigue dando el mismo error

En "tucorreo@tudominio.com", tengo que poner MI email, lo dejo o que tengo que poner?


Título: Re: Problema con enviar email
Publicado por: m0rf en 27 Diciembre 2011, 16:29 pm
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing

El error dice una cosa o la otra si no es el header form, tal vez sea la opción sendmail_from que la tienes que habilitar para qindows, ve a php.ini, quita la linea de comentario y pon el mail que vayas a utilizar.

Tal vez fallaban las dos cosas.



Título: Re: Problema con enviar email
Publicado por: #!drvy en 27 Diciembre 2011, 16:31 pm
Pues ami me parece re-raro esto.... xD



Saludos


Título: Re: Problema con enviar email
Publicado por: Caster en 27 Diciembre 2011, 16:31 pm
Pff el php.ini es largo, sabeis más o menos donde está?


Título: Re: Problema con enviar email
Publicado por: #!drvy en 27 Diciembre 2011, 16:33 pm
......

Ctrl + F o Ctrl + B (Si tu windows es español), pones "sendmail_from" y das a buscar  ;-)


PD: En el mio esta por la linea 1023...



Saludos


Título: Re: Problema con enviar email
Publicado por: Caster en 27 Diciembre 2011, 16:38 pm
Código:
mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = miemail


¿Sería así?


Título: Re: Problema con enviar email
Publicado por: #!drvy en 27 Diciembre 2011, 16:40 pm
Código:
sendmail_from = tuemail@tuemail.com

Quitale los ; que tiene delante para quitarlo como comentario. Y no te olvides de reiniciar Apache.



Saludos


Título: Re: Problema con enviar email
Publicado por: Caster en 27 Diciembre 2011, 16:43 pm
Ya lo cambie, tambien lo reinicie.

Código:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\AppServ\www\enviar_c.php on line 14


Título: Re: Problema con enviar email
Publicado por: #!drvy en 27 Diciembre 2011, 16:49 pm
Bueno pues lo que decía @morf, necesitas un servidor SMTP.

Prueba con este
Código:
http://www.softstack.com/freesmtp.html

Pero ya te digo que los servidores smtp para Windows ami me parecen una merde total.
Lo que te recomendaría es que utilices la clase PHPMailer que simula la funcion mail().



Saludos


Título: Re: Problema con enviar email
Publicado por: Caster en 27 Diciembre 2011, 16:53 pm
Ok, ya lo instalé, ahora que hago¿?


Título: Re: Problema con enviar email
Publicado por: #!drvy en 27 Diciembre 2011, 17:48 pm
Bueno veamos,

FreeSMTP (el link que te di antes) NO Funciona.
O al menos ami no ha parado de tirarme "Recipient Not Valid" por cualquier cosa que haga.

Sugiero que lo desinstales.

Lo que funciona

1.- 1st SMTP Server.
  Aunque sea un programa de pago (tiene un trial de 30 dias), si me ha funcionado y bien.
  Que hacer:
     1. Descargar e Instalar 1s SMTP Server (http://www.emailarms.com/products/1st_smtp.htm)
     2. Ejecutar 1st SMTP Server.
     3. Ejecutar el archivo PHP con la funcion mail.
     3.1. En mi caso este:
     
Código
  1. <?php
  2. $para = 'correo@destinario.com'; // El correo que va a recibir el mensaje
  3. $titulo = 'Probando SMTP'; // Titulo del mensaje
  4. $mensaje = 'Hola mundo!!!'; // Mensaje
  5. $headers = 'From: micorreo@midominio.com '; // correo desde el que supuestamente ha sido enviado.
  6. mail($para, $titulo, $mensaje, $headers);
  7. ?>

    4. Comprobar el correo destinatario, incluida la carpeta spam (El mio acabo aquí xD).


Saludos


Título: Re: Problema con enviar email
Publicado por: m0rf en 27 Diciembre 2011, 18:01 pm
Aquí te dejo otra opción bastante buena y gratuita a menos que le des un uso comercial.

http://www.pmail.com/downloads_s3_t.htm (http://www.pmail.com/downloads_s3_t.htm)


Título: Re: Problema con enviar email
Publicado por: Caster en 27 Diciembre 2011, 18:26 pm
Ok, lo miraré.
Muchas gracias


Título: Re: [Solucionado] Problema con enviar email
Publicado por: dsalcedo en 3 Enero 2012, 00:45 am
no hay nada mejor que utilizar un servidor de paga hay muy baratos y puedes usar la librearia PHPmailer