INICIO > Soporte Técnico > Programación de formularios de envío de correo

Programación de formularios de envío de correo


Programación para formularios de envío de correo 
Los mensajes generados desde formularios PHP usando la función mail(), por defecto, tienen como FROM real del mensaje (Envelope Sender) la dirección nobody@servidor o anonymous@servidor. 
El Envelope Sender es la dirección a donde se enviarán los mensajes de error en caso de haber algún problema con la entrega del mensaje al destinatario, por lo que si tiene el valor por defecto, dichas notificaciones no llegan nunca.
Además, muchos spammers que usan formularios web para el envío de mensajes no solicitados, usan dicha dirección por defecto para el envío, por lo que desde VEDCOR se ha procedido a evitar la salida desde nuestros servidores mensajes con dicho FROM y entre otras cosas, evitar así caer en listas negras.

Para cambiar dicha dirección FROM, lo que se debe hacer es añadir un parámetro adicional a la llamada a la función mail() en el que se indica la dirección de correo deseada para que se establezca como Envelope Sender, por ejemplo, la llamada habitual:

mail ("usuario@destino.com", "Asunto del mensaje", "Cuerpo del mensaje", $cabeceras)
debe cambiarse por algo como:
mail ("usuario@destino.com", "Asunto del mensaje", "Cuerpo del mensaje", $cabeceras, '-fusuario@origen.com'); 

Como se ve, el último parámetro es '-fusuario@origen.com' en el que se indica, seguido de "-f", la dirección que se quiera poner como FROM para el retorno de errores de mensajes y evitar que salgan como nobody o anonymous. 

La dirección de correo usuario@origen.com, obviamente, debe ser de tu dominio y debe existir.

Además, para que funcione correctamente, la variable safe_mode de PHP debe estar a Off.

En portales como OsCommerce, deberemos buscar el archivo desde el cuál se envía el correo, llamado email.php, y alrededor de la línea 520, donde se llama a la función mail():

if (EMAIL_TRANSPORT == 'smtp') { return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers)); } else { return mail($to, $subject, $this->output, 'From: '.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers)); }debemos cambiarlo por:

if (EMAIL_TRANSPORT == 'smtp') { return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers),'-fusuario@dominio.com'); } else { return mail($to, $subject, $this->output, 'From: '.$from.$this->lf.implode($this->lf, $this->headers).$this->lf.implode($this->lf, $xtra_headers),'-fusuario@dominio.com'); }es decir, añadir un último parámetro con la dirección correcta.

Esto se debe hacer en dos archivos que se suelen encontrar en las rutas:

/includes/classes/email.php

/admin/includes/classes/email.php

Con esto, los emails desde OsCommerce saldrán correctamente. 

Más información se puede encontrar en la página de la función mail de PHP: http://es2.php.net/function.mail
  • Suscribirse a nuestro Boletín

  • Email  
Empresas