Entendidos en webs, ¿como hacer funcionar formulario de contacto?

Pues eso, que por cosas del destino me estoy haciendo una web y a la hora de hacer el formulario de contacto me da un error rarísimo. El error en concreto es el siguiente:

Warning: mail() expects parameter 1 to be string, object given in E:\kunden\homepages\7\d437185500\www\mail.php on line 11

La cuestión es que el html del contacto lo tengo codificado así:

<p align="justify"><br>
NOMBRE: </p>
<form name="form1" method="post" action="mail.php">
<label for="NOMBRE"></label>
<input type="text" name="NOMBRE" id="NOMBRE">
<p>EMPRESA:</p>
<label for="EMPRESA"></label>
<input type="text" name="EMPRESA" id="EMPRESA">
<p>DIRECCI&Oacute;N/LOCALIDAD/PROVINCIA:</p>
<label for="DIRECCION"></label>
<input type="text" name="DIRECCI&Oacute;N" id="DIRECCION">
<p>TEL&Eacute;FONO:</p>
<label for="TELEFONO"></label>
<input type="text" name="TEL&Eacute;FONO" id="TELEFONO">
<p>EMAIL:</p>
<label for="EMAIL"></label>
<input type="text" name="EMAIL" id="EMAIL">
<p>COMENTARIO:</p>
<label for="COMENTARIO"></label>
<textarea name="COMENTARIO" id="COMENTARIO" cols="45" rows="5"></textarea>
<p>&nbsp;</p>
<div align="center">
<input type="submit" name="ENVIAR" id="ENVIAR" value="Enviar">
</div>
</form>


Y el archivo mail.php para hacer funcionar el mail tal que así:

<?php


$nombre=$_POST['NOMBRE'];
$empresa=$_POST['EMPRESA'];
$direccion=$_POST['DIRECCION'];
$telefono=$_POST['TELEFONO'];
$mail_cliente=$_POST['EMAIL'];
$comentario=$_POST['COMENTARIO'];
$mail->issendmail='info@xxxxxxxxxxxxxxx.com';
mail($mail,$empresa,$direccion);


?>


Sinceramente, llevo unos cuantos dias para solucionar este error y no se de que cojones puede ser, ¿alguna ayudita?


EDIT: en el mail.php he probado a poner los campos con comillas dobles y simples por lo de string, pero no hay manera
La línea $mail->issendmail='info@xxxxxxxxxxxxxxx.com'; ¿de dónde sale?. ¿Estás programando en POO o qué?. Lo digo porque issendmail me suena a una función y sin embargo tu la tienes como si fuese un objeto y luego le das un valor.
Debo suponer que has pegado mal el código o que realmente esa es la línea que te da el problema.

Fijate en este ejemplo, es parecido al tuyo y como ves utiliza la función issendmail() de una manera más correcta.
http://silvia-programacion-web.blogspot.com.es/2010/04/clase-phpmailer-para-el-envio-de.html

Saludos.
Pues esa linea la puse porque vi por google que para el hosting de 1and1 hace falta hacerlo así, si no lo hago me sale otro error relacionado con el php.ini, algo asi como "sendmail no se que y no se cuantos".
Precisamente el enlace que te he pasado al final de mi anterior comentario es para que funcione con 1&1. De todas formas, ese hosting es una basura, mejor que te busques otro porque al final vas a tener más problemas que beneficios.

De todas formas, aquí tienes un enlace de 1&1 para configurar un formulario y añadirlo a tu pagina:
http://faq.1and1.es/aplicaciones/cgi/6.html
En caso de que te de problemas escribe al soporte tecnico de tu Hosting y que te den ellos el código. Para algo estás pagando ;)
Flanders escribió:Precisamente el enlace que te he pasado al final de mi anterior comentario es para que funcione con 1&1. De todas formas, ese hosting es una basura, mejor que te busques otro porque al final vas a tener más problemas que beneficios.

De todas formas, aquí tienes un enlace de 1&1 para configurar un formulario y añadirlo a tu pagina:
http://faq.1and1.es/aplicaciones/cgi/6.html
En caso de que te de problemas escribe al soporte tecnico de tu Hosting y que te den ellos el código. Para algo estás pagando ;)


pfff en el panel de control no me sale nada de CGI para el formulario y por otra parte lo he arreglado y ahora me sale esto:

Fatal error: Call to a member function isSendMail() on a non-object in E:\kunden\homepages\7\d437185500\www\mail.php on line 10
Lo has arreglado, pero no has publicado el código por aquí. Sin ver el código no puedo ayudarte :(
Como te dije 1&1 es famosa por los problemas que da con formulario de contacto, emails y demás utilidades que se programan con PHP. Si ves que no sabes hacerlo, escríbeles al soporte técnico y si ves que pasan de todo amenaza con darte de baja.

Si pegas el código por aquí, quizás le encontremos alguna solución.
Flanders escribió:Lo has arreglado, pero no has publicado el código por aquí. Sin ver el código no puedo ayudarte :(
Como te dije 1&1 es famosa por los problemas que da con formulario de contacto, emails y demás utilidades que se programan con PHP. Si ves que no sabes hacerlo, escríbeles al soporte técnico y si ves que pasan de todo amenaza con darte de baja.

Si pegas el código por aquí, quizás le encontremos alguna solución.



<?php


$nombre=$_POST['NOMBRE'];
$empresa=$_POST['EMPRESA'];
$direccion=$_POST['DIRECCION'];
$telefono=$_POST['TELEFONO'];
$mail_cliente=$_POST['EMAIL'];
$comentario=$_POST['COMENTARIO'];
$mail->isSendMail();
mail('info@xxxxxxxx.com',$empresa,$direccion);


?>




Este es el código, pero no se como solucionar ese nuevo error, la verdad que me está decepcionando 1and1, llamé por teléfono al servicio técnico y la verdad que no obtuve respuesta. Cada vez que soluciono un error me aparece otro, es de locos jajajaja encima siendo la primera vez que hago algo así
Vamos a probar un código muy simple y me dices si te funciona o no:

formulario.html
<HEAD>
<title>Contacto</title>
</HEAD>
<BODY>
<form method="post" action="mail.php">
  <table>
   <tr>
    <td>¿Cuál es su nombre?</td>
    <td><input type="text" name="name" /></td>
   </tr>
   <tr>
    <td>¿Cuál es su dirección E-mail?</td>
    <td><input type="text" name="email" /></td>
   </tr>
   <tr>
    <td>Comentarios:</td>
    <td><textarea name="data" cols=40 rows=6></textarea></td>
   </tr>
   <tr>
    <td colspan="2"><input type="submit" /></td>
   </tr>
  </table>


</form>
</body>
</html>


mail.php
<?php
$from = $_POST['email'];
$subject = 'subject';
$message = 'From: ' . $_POST['name'] . "\n". 'Mensaje:' . $_POST['data'];
$headers = "From: ". $from . "\n";
mail ('TU-CORREO-ELECTRONICO@XXXXXXX.com', $subject, $message, $headers);
header('Location: thanks.html');
?>


thanks.html
Gracias. Su mensaje ha sido recibido.


Sustituye en el archivo mail.php, la dirección del correo electrónico donde deseas recibir los mensajes.
7 respuestas