Base de Conocimientos: PHP
|
No puedo enviar correos con mi formulario usando mail() de php
Escrito por Andrea Montoya on 14 April 2011 09:50 PM
|
|
|
No puedo enviar correos a traves del formulario con mail() de php: esto se debe a que la función mail() permite generar emails sin necesidad de usar una cuenta de correos real del dominio (nobody). Esto es una vulnerabilidad que puede ser aprovechada por terceros para enviar spam a traves del server. Dado lo anterior, se desactivó el envio de correos a traves del usuario "nobody" en todos nuestros Servidores de Ambiente Compartido. Una alternativa de solución usada por algunos usuarios para realizar los envios a traves del formulario seria utilizar la función MailPear de php: **Envio de correos utilizando PEAR "PHP Extension and Application Repository" http://www.pear.php.net/ 1) Crear o utilizar una cuenta certificada del server de donde se haran los envios. 2) Descargar los archivos necesarios que utilizara el PEAR para realizar el envío, especificamente son dos carpetas, con el nombre de Net_SMTP-1.2.10/ y Mail-1.1.12/ (estas deben ubicarse en la carpeta donde se encuentra el formulario). http://download.pear.php.net/package/Net_SMTP-1.2.10.tgz http://download.pear.php.net/package/Mail-1.1.12.tgz 3) En el inicio del archivo que utiliza la función mail de php adicionar el archivo de configuración: /////////////////////////////////////////////// //se adiciona este archivo de configuracion // ///////////////////////////////////////////// require_once "Mail-1.1.12/Mail.php"; . . . 4) Sustituir la funcion mail de php por lo siguiente, estos son los paramentros que utiliza la funcion ($mail_object): $recipients = "recipientes"; $headers["From"] = "From"; $headers["To"] = "To"; $headers["Subject"] = "Asunto"; $body = "mensaje"; $params["host"] = "localhost"; //puerto smtp $params["port"] = "25"; //activamos la autenticacion, siempre a true $params["auth"] = true; //usuario del correo desde el que enviamos, la que se creo o utiliza en la parte numero 1. $params["username"] = "nombre@dominio.algo"; //clave de la cuenta de correo anterior $params["password"] = "passwd"; // Creamos el objeto mail usando el metodo Mail::factory $mail_object =& Mail::factory("smtp", $params); // Enviamos el correo con los datos anteriores $mail_object->send($recipients, $headers, $body); Debe cambiar el valor de las variables por sus valores reales. Esperamos le sirva de ayuda. | |
|
|
|
Comentarios (0)
