Ver Mensaje Individual
  #11 (permalink)  
Antiguo 11/03/2016, 21:31
zurferitox
 
Fecha de Ingreso: marzo-2012
Mensajes: 10
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: No recibo email a través del formulario

Muy buenas de nuevo. Aquí sigo intentando resolver este problema que me tiene bastante frustrado.

Esta vez lo que he probado ha sido realizar un pequeño formulario, pasar los datos mediante POST a un archivo PHP y tratar de enviar esos datos por correo electrónico usando PHPMailer.

Este sería el formulario, donde se recogen los datos del usuario:

Código HTML:
 <form id="form1" class="well col-lg-12" action="enviar.php" method="post" name="form1" enctype="multipart/form-data">
      <div class="row">
       <div class="col-lg-6">
        <label>Nombre*</label> <input id="Nombre" class="form-control" type="text" name="Nombre" /> 
        <label>Email*</label> <input id="Email" class="form-control" type="email" name="Email" />
       </div>
        <div class="col-lg-6"><label>Mensaje*</label> 
         <textarea id="Mensaje" class="form-control" name="Mensaje" rows="4"></textarea>
        </div>
         <div class="col-lg-12">
    <label for="exampleInputFile">Adjuntar archivo</label>
    <input type="file" name="adjunto" id="archivo-adjunto">
    <p class="help-block">Example block-level help text here.</p>
  </div>
        <button class="btn btn-default pull-right" type="submit">Enviar</button>
      </div>
    </form> 
Y este sería el archivo PHP:

Código PHP:
<?php

$Nombre 
$_POST['Nombre'];
$Email $_POST['Email'];
$Mensaje $_POST['Mensaje'];
$archivo $_FILES['adjunto'];

if (
$Nombre=='' || $Email=='' || $Mensaje==''){

echo 
"<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";

}else{

    require(
"archivosformulario/class.phpmailer.php");
    
$mail = new PHPMailer();

    
$mail->From     $Email;
    
$mail->FromName $Nombre
    
$mail->AddAddress("[email protected]"); // Dirección a la que llegaran los mensajes.
   
// Aquí van los datos que aparecerán en el correo que reciba
    //adjuntamos un archivo 
        //adjuntamos un archivo
            
    
$mail->WordWrap 50
    
$mail->IsHTML(true);     
    
$mail->Subject  =  "Contacto";
    
$mail->Body     =  "Nombre: $Nombre \n<br />".    
    
"Email: $Email \n<br />".    
    
"Mensaje: $Mensaje \n<br />";
    
$mail->AddAttachment($archivo['tmp_name'], $archivo['name']);
    
    
    

// Datos del servidor SMTP

        
$mail->IsSMTP(); 
    
$mail->SMTPDebug  2;    
        
$mail->Host "smtp.gmail.com";  // Servidor de Salida.
    
$mail->SMTPAuth true
    
$mail->Port 465;
    
$mail->SMTPSecure "ssl"
        
$mail->Username "[email protected]"
        
$mail->Password "micontraseña"
    
    if (
$mail->Send())
    echo 
"<script>alert('Formulario enviado exitosamente, le responderemos lo más pronto posible.');location.href ='javascript:history.back()';</script>";
    else
    echo 
"<script>alert('Error al enviar el formulario');location.href ='javascript:history.back()';</script>";

}

?>
Pues bien, esto ejecutado en local, funciona perfectamente. Recibo los mensaje a mi email sin ningún problema.

En el momento que lo subo a mi host, deja de funcionar. He probado en dos (123-reg.co.uk y 000webhost) y en ninguno funciona.

He probado a editar el archivo de PHP, con los datos del propio dominio, es decir, el archivo PHP quedaría de la siguiente forma:

Código PHP:
<?php

$Nombre 
$_POST['Nombre'];
$Email $_POST['Email'];
$Mensaje $_POST['Mensaje'];
$archivo $_FILES['adjunto'];

if (
$Nombre=='' || $Email=='' || $Mensaje==''){

echo 
"<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";

}else{


    require(
"archivosformulario/class.phpmailer.php");
    
$mail = new PHPMailer();

    
$mail->From     $Email;
    
$mail->FromName $Nombre
    
$mail->AddAddress("[email protected]"); // Dirección a la que llegaran los mensajes.
   
// Aquí van los datos que apareceran en el correo que reciba
    //adjuntamos un archivo 
        //adjuntamos un archivo
            
    
$mail->WordWrap 50
    
$mail->IsHTML(true);     
    
$mail->Subject  =  "Contacto";
    
$mail->Body     =  "Nombre: $Nombre \n<br />".    
    
"Email: $Email \n<br />".    
    
"Mensaje: $Mensaje \n<br />";
    
$mail->AddAttachment($archivo['tmp_name'], $archivo['name']);
    
    
    

// Datos del servidor SMTP

        
$mail->IsSMTP(); 
        
$mail->SMTPDebug  2;            
        
$mail->Host "smtp.123-reg.co.uk";  // Servidor de Salida.
    
$mail->SMTPAuth true
    
$mail->Port 25;
        
$mail->Username "[email protected]"
        
$mail->Password "contraseña";
    
    if (
$mail->Send())
    echo 
"<script>alert('Formulario enviado exitosamente, le responderemos lo más pronto posible.');location.href ='javascript:history.back()';</script>";
    else
    echo 
"<script>alert('Error al enviar el formulario');location.href ='javascript:history.back()';</script>";

}

?>
Y me salta el siguiente mensaje de error:

Código:
SMTP Error: Data not accepted
Por más vueltas que le doy no entiendo como hacerlo funcionar en mi dominio que es donde me interesa para que funcionen correctamente los formularios de contacto de la web.

Alguien podría echarme una mano, por favor?

Muchas gracias a todos por vuestro tiempo.

Un saludo.