gracias por tu paciencia querido skaparate... espero no desesperarte, je
Jajajjaja, no hay problema, solo me desespero conmigo mismo cuando no puedo reesolver un problema :P.
Efectivamente, ahí aparecerá el nombre de tu servidor, pero únicamente si $from esta vacía, así que si escribiste la función así: sendit('[correo eliminado]),...); esa parte del código nunca llegará a ejecutarse.
Para hacer más fácil la corrección de errores, separa el código PHP del HTML. Lo que tienes ahora, se puede separa así:
registro.php (el que contiene el formulario):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Registro de usuarios</title>
</head>
<body>
<!-- aquí va el formulario de registro -->
<form action="procesar.php" method="post">
<label for="nombrempresa">Nombre de la empresa:</label><input name="nombrempresa" type="text" size="90" maxlength="350" style="background-color:#B3C2E8"/><br /><br />
<label for="giro">Giro:</label><input name="giro" type="text" size="50" maxlength="200"style="background-color:#B3C2E8"/><br /><br />
<label for="nombre">Nombre del Representante:</label><input name="nombre" type="text" size="90" maxlength="350" style="background-color:#B3C2E8" /><br /><br />
<label for="direccion">Dirección:</label><br /><textarea name="direccion" rows="2" cols="100" style="background-color:#B3C2E8"></textarea><br /><br />
<label for="telefono">Teléfono:</label><input name="telefono" type="text" size="50" maxlength="50" style="background-color:#B3C2E8" /><br /><br />
<label for="email">Email:</label><input name="email" type="text" size="70" maxlength="150" style="background-color:#B3C2E8" /><br /><br /><br />
<label>Opciones de Registro:</label><br /><br />
<input type="radio" name="asociado" value="1" /><label>Asociado</label>
<input type="radio" name="asociado" value="2" /> <label>Asociado Activo</label>
<input type="radio" name="asociado" value="3" /> <label>Asociado Plus</label><br /><br /><br />
<input type="reset" value="Borrar" />
<input type="submit" value="Enviar" /><br /><br /><br />
</form>
<?php
// La siguiente línea muestra los mensajes enviados por el archivo que procesa el registro:
if(isset($_GET['msg'])
print '<p>' .htmlentities($_GET['msg']). '</p>';
?>
</body>
</html>
Ahora al enviar el archivo, la información será enviada al archivo que los procesa que, en este caso, es procesar.php:
procesar.php<?php
// La siguiente línea obliga al interprete de PHP
// a mostrar todos los errores que ocurran en la ejecución del script.
// Nota: desactiva esta línea cuando no hayan errores en el archivo a través de comentarios.
error_reporting(E_ALL);
if(!isset($_POST['email']) {
$msg = 'Debe ingresar un e-mail válido';
header('Location: index.php?msg=' .$msg;
}
else {
$mensaje="Mensaje del formulario de registro de asociados";
$mensaje.= "\nNombre de la empresa: ". $_POST['nombrempresa'];
$mensaje.= "\nNombre del Representante: ". $_POST['nombre'];
$mensaje.= "\nEmail: ".$_POST['email'];
$destino= "[correo eliminado]";
$remitente = htmlentities($_POST['email']);
$asunto = "Mensaje enviado por: ".$_POST['nombre'];
if(sendit($remitente, $destino, $asunto, $mensaje))
$msg = 'Mensaje enviado correctamente';
else
$msg = 'Ocurrió un error al enviar el mensaje';
header('Location index.php?msg=' .$msg);
}
function sendit($from = '', $to = '', $subject = 'Sin asunto', $contenido = '', $CC = '', $BCC = '', $sIP = '') {
$eol = PHP_EOL;
if($sIP == '')
$sIP = md5($subject.date('dmY'));
if($from == '')
$from = '"No responda" <noreply@' .$_SERVER['SERVER_NAME']. '>'.$eol;
$header = 'From: ' .$from.$eol;
$header .= 'Reply-To: ' .$from.$eol;
$header .= 'Return-Receipt-To: ' .$from.$eol;
$header .= 'Return-Path: ' .$from.$eol;
if($CC != '')
$header .= 'CC: ' .$CC.$eol;
if($BCC != '')
$header .= 'BCC: ' .$BCC.$eol;
$header .= 'Message-ID: <' .time(). ' no-reply@' .$_SERVER['SERVER_NAME']. '>' .$eol;
$header .= 'Content-Type: multipart/alternative; boundary="' .$sIP. '"' .$eol.$eol;
$header .= 'MIME-Version: 1.0' .$eol;
// TEXTO PLANO/PLAIN TEXT
$msg = "Content-Type: multipart/alternative".$eol;
$msg .= '--' .$sIP.$eol;
$msg .= 'Content-Type: text/plain; charset=utf-8' .$eol;
$msg .= 'Content-Transfer-Encoding: 7bit' .$eol.$eol;
$msg .= 'Para ver correctamente este mensaje, usted necesita activar el contenido HTML.'.$eol;
$msg .= 'Si usted está leyendo esto, por favor actualice su cliente de correo electrónico o active el contenido HTML.'.$eol;
$msg .= '------- Mensaje truncado -------'.$eol.$eol;
// MENSAJE HTML
$msg .= '--'.$sIP.$eol;
$msg .= 'Content-Type: text/html; charset=utf-8'.$eol;
$msg .= 'Content-Transfer-Encoding: 7bit'.$eol.$eol;
$msg .= $contenido.$eol.$eol;
ini_set('sendmail_from', $from);
if (mail($to, $subject, wordwrap($msg, 70, $eol), $header)) {
@ini_restore('sendmail_from');
return true;
}
else {
@ini_restore('sendmail_from');
return false;
}
}
?>
De esta forma la corrección de errores será mucho más simple. Me queda solo una duda: ¿estas utilizando un hosting o servidor remoto o estas utilizando un servidor local (de pruebas)? Si estas utilizando un servidor local (como Xampp u otro), entonces debo advertirte que la función mail no funciona porque no esta correctamente configurado. Además, para enviar mail desde el servidor local tienes que comprar un dominio y configurar correctamente el servidor (es un gran lio).
Saludos.