PHP - Falla en formulario con PHPMailer en IONOS

 
Vista:
sin imagen de perfil

Falla en formulario con PHPMailer en IONOS

Publicado por Gerardo (2 intervenciones) el 30/03/2024 21:53:44
Estimados[u]
Este es mi primer mensaje en el foro, mi nombre es Gerardo.

Voy a tratar de ser lo mas claro posible con el problema que tengo:
Tengo una web que en sus formularios utiliza phpmailer, Desde hace unos dias el servidor donde tengo una web (ionos.es), ha modificado algunas cuestiones de seguridad y los formularios dejaron de funcionar.

Luego de muchas pruebas y consultas con el soporte tecnico (todas negativa) probe en otro servidor (de otra empresa) y ahi funciona perfecto... pero en IONOS NO.

El formulario se encuentra en: https://www.mcspalma.com/txt/comuni.php

Sucede que cuando le doy al boton de "enviar" genera el mensaje de error:
"Hubo un error y no hemos podido entregar tu mensaje, por favor vuelve a intentarlo"

Luego de varias pruebas me di cuenta que SI en ese formulario yo coloco en el campo "EMAIL" una direccion del MISMO DOMINIO... Ej. [email protected] el mensaje llega perfecto


El script que utilizo para enviar el formulario es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
session_start();
$_SESSION["token"] = md5(uniqid(mt_rand(), true));
require "config.php";
  ini_set('display_errors',1);  error_reporting(E_ALL);
  if(!empty($_POST["csrf"]) && !empty($_POST["csrf"]) == $_SESSION["token"]){
      $userIP = $_SERVER["REMOTE_ADDR"];
      $recaptchaResponse = $_POST['g-recaptcha-response'];
      $secretKey = $yoursecretkey;
      $request = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secretKey}&response={$recaptchaResponse}&remoteip={$userIP}");
      if(!strstr($request, "true")){
          echo '<script>alert("Hay un problema! por favor completa correctamente el captcha...");</script>';
      }
      else{
        if(isset($_POST['nombre']) && isset($_POST['servicio']) && isset($_POST['correo']) && isset($_POST['mensaje']))
        {
        $message=
        '<strong>Nombre:</strong> '.$_POST['nombre'].'<br /> <br />
        <strong>Pregunta por:</strong>  '.$_POST['servicio'].'<br /> <br />
        <strong>Correo:</strong>  '.$_POST['correo'].'<br /> <br />
        <strong>Mensaje:</strong>   '.$_POST['mensaje'].' <br /> <br /> <hr>
        <p><strong>Datos de envio</strong>:</p>
        <strong>Enviado desde:</strong> '.$_SERVER['HTTP_HOST'].' <br>
        <strong>IP:</strong> '.$userIP.'
        ';
            require "mailer/class.phpmailer.php";
            $mail = new PHPMailer();
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = "tls";
            $mail->Host = $host;
            $mail->Port = 587;
            $mail->Encoding = '7bit';
            $mail->Username   = $senderEmail;
            $mail->Password   = $senderPassword;
            $mail->SetFrom($_POST['correo'], $_POST['nombre']);
            $mail->AddReplyTo($_POST['correo'], $_POST['nombre']);
            $mail->Subject = "Formulario de contacto";
            $mail->MsgHTML($message);
            $mail->AddAddress("$receiver", $receiverName);
            $result = $mail->Send();
            $alerta = $result ? '<script>alert("Hemos recibido tu mensaje, nos pondremos en contacto con usted a la brevedad.");</script>' : '<script>alert("Hubo un error y no hemos podido entregar tu mensaje, vuelve a intentarlo.");</script>';
            session_destroy();
            unset($mail);
        }
      }
  }
?>

Y en el archivo Config.php tengo:

1
2
3
4
5
6
7
8
9
$host = "smtp.ionos.es";
  $senderEmail = "algo@mcspalma.com";
  $senderPassword = "miPasword";
  // INFORMACION DEL QUE RECIBE EL MENSAJE
  $receiverName = "Algo";
  $receiver = "algo@mcspalma.com";
 
  $yoursecretkey = "6Ldr6KwlAAAAAMV3igcNJjLidPTrhSqhxxxxxxxxx";
  $yourpublickey = "6Ldr6KwlAAAAADzcmyexRG3dAyj9Eu9jxxxxxxxxx";


Los "gentiles de la empresa de Hosting" me pasaron este script que funciona... pero cuando intento integrarla al formulario, tambien falla y es probable que sea por mis escasos conocimientos.

Por las dudas se los dejo aqui:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
?php require "mailer/class.phpmailer.php";
$mail             = new PHPMailer();
$body             = "Test de PHPMailer";
$mail->IsSMTP();
$mail->SMTPAuth   = true;
$mail->SMTPSecure = "tls";
$mail->Host       = "smtp.ionos.es";
$mail->Port       = 587;
$mail->Username   = "algo@mcspalma.com";
$mail->Password   = "miPasword";
$mail->From       = "algo@mcspalma.com";
$mail->FromName   = "Soporte IONOS";
$mail->Subject    = "Mensaje de prueba";
$mail->MsgHTML($body);
$mail->AddReplyTo("algo@mcspalma.com","Soporte IONOS");
$mail->AddAddress("algo@mcspalma.com");
$mail->IsHTML(true);
  if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
  } else {
    echo "El mensaje se ha enviado correctamente";
  }
?>

Espero no haberme extendido demaciado... Desde ya MUCHAS GRACIAS por sus ideas o aportes
Gerardo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Falla en formulario con PHPMailer en IONOS

Publicado por Mauro (1036 intervenciones) el 02/04/2024 18:15:05
Siendo que estás usando el SMTP del propio IONOS es posible que hayan puesto una regla respecto de los dominios a los que se puede enviar correos.

No tengo experiencia específica con ese proveedor pero, por lo que comentas se me ocurre que podría venir por ahí el problema. Es posible que no quieran que sus servidores se usen para enviar spam.

En todo caso, tendrías que verificar si este es el caso y cuáles son los T&C de uso del servicio que tienes.

Tal vez necesites cambiar de proveedor o utilizar un servicio diferente para realizar los envíos (Algo como SendGrid o similar)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Falla en formulario con PHPMailer en IONOS

Publicado por Gerardo (2 intervenciones) el 02/04/2024 23:24:12
Estimado GRACIAS por tu respuesta!
Recibi del soporte el siguente mensaje:
Le informamos que se ha detectado que se estaban enviando correos con remitentes alternativos o en blanco a través de nuestros servidores de correo electrónico. La dirección afectada por esta práctica fue identificada como [email protected], de modo que la casuística parece coincidir con el problema que nos manifiesta. Es por ello que le recomendamos revisar el script de envío SMTP para hacer coincidir la dirección que hace el envío con el remitente y volver a probar para ver si el problema se resuelve de este modo

No entiendo cual es el problema ya que es el tipico formulario de contacto de una Web, y no se utiliza para para enviar Span, ni publicidad... solo toma los datos insertados en los cuatro campos del formulario y se los envia a una direccion de email de la propia web para que el propietario los lea...
Si estoy considerando seriamente cambiar de proovedor ya que nunca tuvieron la predisposicion de ayudar a solucionar el problema..
Si tiene alguna mas para ayudarme se los agradecere...
Saludos y muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar