> Faqs > Envio de formularios por mail

Envio de formularios por mail

Hola a tod@s
Estoy intentando mandar unos datos de un formulario por email, estoy trabajando en wampserver, el codigo lo tengo de una pagina de internet y es el siguiente:

<span class="codigo"> <?php //Copyright © McAnam.com

function form_mail($sPara, $sAsunto, $sTexto, $sDe){

$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";

if ($sDe)$sCabeceras = "From:".$sDe." "; else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0 ";
foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto." ".$sNombre." = ".$sValor;

foreach ($_FILES as $vAdjunto){

if ($bHayFicheros == 0){

$bHayFicheros = 1;

$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary="--_Separador-de-mensajes_--" ";

$sCabeceraTexto = "----_Separador-de-mensajes_-- ";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1 ";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT ";

$sTexto = $sCabeceraTexto.$sTexto;
}

if ($vAdjunto["size"] > 0){

$sAdjuntos .= " ----_Separador-de-mensajes_-- ";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name="".$vAdjunto["name"]."" ";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64 ";
$sAdjuntos .= "Content-disposition: attachment;filename="".$vAdjunto["name"]."" ";

$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}

}

if ($bHayFicheros)
$sTexto .= $sAdjuntos." ----_Separador-de-mensajes_---- ";

return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
}

//Ejemplo de como usar:
if (form_mail("depcnaso@yahoo.es",
"Activación de formulario",
"Los datos introducidos en el formulario son: ",
"jero@localhost"
)
)
echo "Su formulario ha sido enviado con exito";
?> </span>

y me da el siguiente error:

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:wampwwwcarmenformulariomail_adjuntos.php on line 51 también he probado con otros script de internet y siempre me da el mismo error. Pueden decirme que debo hacer en php.ini para que funcione???
Gracias

Respuestas

Hola Nely. El servidor WAMP es muy bueno, pero no incluye un servidor de Correo electrónico (que en este caso es el que necesitas para enviar los correos)... te recomiendo utilizar scripts que no usen la función mail() ya que normalmente utilizan/buscan el servidor local (localhost) para enviar los correos. En el php.ini hay una configuración que dice: [mail function] ; For Win32 only. SMTP = localhost smtp_port = 25 Si deseas tener un servidor de correo (SMTP es para enviar) instalado en tu equipo de pruebas no podría recomendarte uno. Sin embargo, si estás contratando con alguna empresa de hosting puede que te faciliten el servidor SMTP asociado a tu cuenta. En lo personal recomiendo no tocar el php.ini y acudir a un servidor SMTP externo. Si puedes conseguir un script (como PHPMailer; hay mejores, pero no recuerdo los nombres) que se conecte, por ejemplo, a Yahoo, puedes enviar correos desde tu cuenta habitual. Espero haber explicado claro y haber respondido a tu pregunta. En caso contrario, por favor, házmelo saber. Saludos

Marco Antonio Camarena