Estoy haciendo un formulario para enviar un email a una direccion predefinida pero me da error, códigos:
formulario.php
<html>
<body>
<form action="enviar_c.php" method="post">
<table width="200" heicht="200" border="0">
<tr>
<td>Asunto:</td>
<td><input type="text" name="asunto" /></td>
</tr>
<tr>
<td>Desde:</td>
<td><input type="text" name="desde" /></td>
</tr>
<tr>
<td>Mensaje:</td>
<td><textarea name="mensaje"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="enviar correo" /></td>
</tr>
</table>
</body>
</html>
enviar_c.php:
<?php
if(isset($_POST['asunto']) && !empty($_POST['asunto']) &&
isset($_POST['desde']) && !empty($_POST['desde']) &&
isset($_POST['mensaje']) && !empty($_POST['mensaje']))
{
$destinatario = "(noquieroponerelemail)";
$asunto = $_POST['asunto'];
$mensaje = $_POST['mensaje'];
mail($destinatario,$asunto,$mensaje);
echo "correro enviado";
}else{
echo "correro no enviado";
}
?>
El error es el siguiente:
Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing
No esta habilitada la función mail en php.ini.
Si es un servidor gratuito olvidate. Sinó habilitalo.
Saludos.
Si, es gratuito, me descargué el AppServ
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.
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:
<?php
$para = 'papanoel@SantaClausVillage.org';
$titulo = 'HDP dame mi juguete cabron!!!';
$mensaje = 'QUE ME DES MI REGALO O ME CHIVO A LOS REYES MAGOS ¬¬';
$headers = 'From: tucorreo@tudominio.com' . "\r\n" .
'Reply-To: tucorreo@tudominio.com';
mail($para, $titulo, $mensaje, $headers);
?>
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
Ya decia yo que se me pasaba algo por alto >.<
Este es el nuevo código:
<?php
if(isset($_POST['asunto']) && !empty($_POST['asunto']) &&
isset($_POST['desde']) && !empty($_POST['desde']) &&
isset($_POST['mensaje']) && !empty($_POST['mensaje']))
{
$destinatario = "miemail";
$asunto = $_POST['asunto'];
$mensaje = $_POST['mensaje'];
$headers = 'From tucorreo@tudominio.com' . "\r\n" .
'Reply-To: tucorreo@tudominio.com';
mail($destinatario,$asunto,$mensaje,$headers);
echo "correro enviado";
}else{
echo "correro no enviado";
}
?>
Sigue dando el mismo error
En "tucorreo@tudominio.com", tengo que poner MI email, lo dejo o que tengo que poner?
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.
Pues ami me parece re-raro esto.... xD
Saludos
Pff el php.ini es largo, sabeis más o menos donde está?
......
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
mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = miemail
¿Sería así?
sendmail_from = tuemail@tuemail.com
Quitale los ; que tiene delante para quitarlo como comentario. Y no te olvides de reiniciar Apache.
Saludos
Ya lo cambie, tambien lo reinicie.
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
Bueno pues lo que decía @morf, necesitas un servidor SMTP.
Prueba con este
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
Ok, ya lo instalé, ahora que hago¿?
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:
<?php
$para = 'correo@destinario.com'; // El correo que va a recibir el mensaje
$titulo = 'Probando SMTP'; // Titulo del mensaje
$mensaje = 'Hola mundo!!!'; // Mensaje
$headers = 'From: micorreo@midominio.com '; // correo desde el que supuestamente ha sido enviado.
mail($para, $titulo, $mensaje, $headers);
?>
4. Comprobar el correo destinatario, incluida la carpeta spam (El mio acabo aquí xD).
Saludos
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)
Ok, lo miraré.
Muchas gracias
no hay nada mejor que utilizar un servidor de paga hay muy baratos y puedes usar la librearia PHPmailer