Foros del Web » Programando para Internet » PHP »

función mail() de php repetitiva

Estas en el tema de función mail() de php repetitiva en el foro de PHP en Foros del Web. Saludos amigos de foros del web: Estoy desquiciado con un tema de la función mail(), que me lleva peleando más de seis horas y sigo ...
  #1 (permalink)  
Antiguo 27/09/2010, 04:47
 
Fecha de Ingreso: agosto-2009
Ubicación: $this->home = "BCN";
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
función mail() de php repetitiva

Saludos amigos de foros del web:

Estoy desquiciado con un tema de la función mail(), que me lleva peleando más de seis horas y sigo sin dar con la solución.

El caso es que me envia los emails correctamente, respetando todo el formato, el destinatario, etc.. Peeeero, la muy jodida, me envia los emails 4 veces segudas sin demora de tiempo.

He leido en algún post ya publicado, que puede ser debido a diferentes problemas o aspectos:

Uno: "las cabeceras o headers del email": Negativo con y sin ellas el problema persiste.

Dos: "tener la función mail() en un bucle": Negativo, esta en un metodo de una clase sin bucles.

Tres: "configuración del smtp del servidor": Negativo, según conversación telefonica con el servicio técnico, se debe a un error de programación.

Solo me queda pensar un error de mi planteamiento logico en el codigo, pero la verdad es que después de seis horas de pruebas, revisiones, cafes y cigarrillos, sigo sin encontrar el bug del maldito problema.

Aquí os muestro mi código:

Código PHP:
// Por un lado, tengo este método para según las variables recibidas, mostrar el formulario de contacto, o bien la página de confirmación del envio, o bien el mensaje de error o éxito en el envio de los emails depués de haber intentado realizar el envio
public function ConfirmaDades()
    {
        
// Si no s'ha rebut l'acciò de enviar el formulari ni de confirmació de dades
        
if($this->formulari == "" && $this->confirmacio == "")
        {
            
// Mostro el formulari
            
$this->accio $this->SolicitudInformacio();
        }
        
// Si no, si ja s'ha rebut l'acció de enviar i encara no s'han confirmat les dades
        
elseif($this->formulari == "0" && $this->confirmacio == "")
        {
            
// Procedeixo a mostrar les dades a enviar per a confirmar per part de l'usuari
            
$this->accio $this->ComprobaDades();
        }
        
// Si s'ha enviat el formulari i ja s'han confirmat les dades
        
elseif($this->clau == "enviar")
        {
            
// Envio emails al servidor i a la safata d'entrada de l'usuari
            
$this->EnviaEmailServidor();
            
$this->EnviaEmailResposta();
            
$this->accio $this->Missatge();
        }
        return 
$this->accio;
    }
//  A continuación os muestro los métodos que generan los envios de los emails a servidor y usuario

// Este es el que envia los datos del formulario al servidor
public function EnviaEmailServidor()
    {
        
$destinatari "[email protected]";
        
$capsaleres "MIME-Version: 1.0" "\r\n";
        
$capsaleres .= "Content-type: text/html; charset=iso-8859-1\r\n";
        
$capsaleres .= "From: ".$_SESSION["email"]."\r\n";
        
$titol "Sol.licitud de informació via web";
        
$emailRemitent $_SESSION["email"];
        
$nomRemitent $_SESSION["nom"];
        
$cognom1Remitent $_SESSION["cognom1"];
        
$cognom2Remitent $_SESSION["cognom2"];
        
$telefonRemitent $_SESSION["telefon"];
        
$mobilRemitent $_SESSION["mobil"];
        
$missatgeRemitent wordwrap($_SESSION["assumpte"], 70);
        
$missatge "Les dades del client són: ";
        
$missatge .= "Nóm: ".$nomRemitent."<br />";
        
$missatge .= "Primer cognom: ".$cognom1Remitent."<br />";
        
$missatge .= "Segon cognom: ".$cognom2Remitent."<br />";
        
$missatge .= "Telèfon: ".$telefonRemitent."<br />";
        
$missatge .= "Mòbil: ".$mobilRemitent."<br />";
        
$missatge .= "Email: ".$emailRemitent."<br />";
        
$missatge .= "La consulta es: <br />";
        
$missatge .= $missatgeRemitent."<br />";
        
$enviaEmail mail($destinatari$titol$missatge$capsaleres);
        return 
$enviaEmail;
    }

// Y este es el que le envia una respuesta comercial al usuario

public function EnviaEmailResposta()
    {
        
$destinatari $_SESSION["email"];
        if(
$this->idioma == "cat")
        {
            
$titol "Resposta comercial de smib";
            
$capsaleres "MIME-Version: 1.0\r\n";
            
$capsaleres .= "Content-type: text/html; charset=iso-8859-1\r\n";
            
$capsaleres .= "From: Departament comercial <[email protected]>\r\n";
            
$missatge $this->RespostaHTML();
        }
        else
        {
            
$titol "Respuesta comercial de smib";
            
$capsaleres "MIME-Version: 1.0\r\n";
            
$capsaleres .= "Content-type: text/html; charset=iso-8859-1\r\n";
            
$capsaleres .= "From: Departamento comercial <[email protected]>\r\n";
            
$missatge $this->RespostaHTML();
        }    
        
$enviaEmail mail($destinatari$titol$missatge$capsaleres);
        return 
$enviaEmail;
    } 
En ambos métodos he probado dos modos de envio:

Modo de envio 1:
Código PHP:
$enviaEmail mail($destinatari$titol$missatge$capsaleres);
        return 
$enviaEmail
Modo de envio 2:
Código PHP:
return mail($destinatari$titol$missatge$capsaleres); 
Y los dos modos me envian correctamente el email pero lo hacen en cuatro ocasiones como os comentaba al inici de mi mensaje.

Gracias de antemano a todos aquellos que dediqueis algo de tiempo a este post y podáis aportar algo de luz sobre este problema.
  #2 (permalink)  
Antiguo 27/09/2010, 08:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: función mail() de php repetitiva

Pues sin ver el contexto bajo el que mandas tus mensajes no te puedo decir porque lo hace, en sí el código esta correcto, el que hagas return o lo asignes eso no tiene nada que ver, verifica en tu flujo de tu código que no llames 4 veces a la función que genera el correo.

Saludos.
  #3 (permalink)  
Antiguo 30/09/2010, 08:22
 
Fecha de Ingreso: agosto-2009
Ubicación: $this->home = "BCN";
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: función mail() de php repetitiva

Cita:
Iniciado por GatorV Ver Mensaje
Pues sin ver el contexto bajo el que mandas tus mensajes no te puedo decir porque lo hace, en sí el código esta correcto, el que hagas return o lo asignes eso no tiene nada que ver, verifica en tu flujo de tu código que no llames 4 veces a la función que genera el correo.

Saludos.
Muchas gracias por tu aporte GatorV.

Ya he comprobado el código de arriba a abajo, y evidentemente se trataba de una error de planteamiento lógico, ahora ya envio solo un email, como cabía esperar.

Etiquetas: mail, repetitiva
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:01.