sábado, 11 de marzo de 2017

WampServer Configurar Sendmail Php Mail

Vamos a ver cómo podemos enviar un mail desde nuestro servidor local WampServer utilizando Sendmail y Php.
Lo primero que debemos de hacer es descargar el programa Fake Sendmail desde su web en el siguiente enlace: http://www.glob.com.au/sendmail/sendmail.zip

Una vez hemos descargado el zip lo que haremos es descomprimirla en la ruta de nuestro servidor, por ejemplo: C:\wamp\sendmail



 El siguiente paso, es configurar los parámetros del servidor de correo, para ello tenemos que editar el fichero “sendmail.ini”, C:\wamp\sendmail\ sendmail.ini.

Hemos de localizar en este archivo los siguientes campos y configurarlos con la información de nuestro servidor, Gmail o Outlook, yo utilizo Outlook.

Lo abrimos con DreamWeaver por ejemplo y lo editamos.

; PARA GMAIL.
; smtp_server=smtp.gmail.com
; smtp_port=465

; PARA OUTLOOK.
smtp_server=smtp-mail.outlook.com
smtp_port=587

; PARA CUALQUIERA DE ELLOS.
auth_username=Mi_Mail@hotmail.es
auth_password=Mi_Password

Si en alguna de las líneas hubiera un punto y coma (;) deberíamos quitarlo o escribir una línea nueva, para que funcione correctamente.
Ahora debemos de configurar el archivo php.ini; las rutas son:
C:\wamp\bin\apache\apache2.4.23\ bin\php.ini
C:\wamp\bin\php\php5.6.25\ php.ini
C:\wamp\bin\php\php7.0.10\ php.ini

Una vez abierto en el editor deberemos de buscar la línea que dice “sendmail_path” y la dejamos de la siguiente manera: sendmail_path ="C:\wamp\sendmail\sendmail.exe -t" (Ojo a las "). Esta es la ruta en la que yo lo he descomprimido, si lo habéis hecho en otra esa será la correcta.

Muy importante es comprobar que estas extensiones php  de nuestro servidor están activadas:
php_openssl y php_sockets, si no es así las hemos de activar.

Una vez hecho esto hemos de reiniciar el servidor Wamp.

Un detalle muy importante es la configuración de nuestro firewall, si no lo tenemos abierto a nuestro servidor WampServer no podremos enviar nada.
Hemos de ir a la configuración del firewall, en caso de Windows:
Panel de control\Sistema y seguridad\Firewall de Windows\Programas permitidos
Y permitir este programa.
 
Si todo ha salido correcto ya tenemos nuestro servidor listo para enviar nuestros mails.

Ahora os dejo un ejemplo en php que nos enviará un mail una vez llamemos a la función que lo contiene.

MUCHO OJO A LAS (") BUENAS Y LAS (“) MALAS.
Esta función está comprobada en servidor local y remoto, funciona 100%.

function mens(){
        
$text_body = " <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
    <head>
        <title>Untitled Document</title>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
        <meta http-equiv='content-type' content='text/html' charset='utf-8' />
        <meta http-equiv='Content-Language' content='es-es'>
        <META NAME='Language' CONTENT='Spanish'>
    </head>
    <body bgcolor='#D7F0E7'>
        <STYLE>
            body {font-family: 'Times New Roman', Times, serif;
            body a {text-decoration:none; }
            table a {color: #666666;
                  text-decoration: none;
                  font-family: 'Times New Roman', Times, serif; }
            table a:hover {color: #FF9900;
                    text-decoration: none; }
            tr {margin: 0px;
                  padding: 0px; }
            td {margin: 0px;
                  padding: 6px; }
            th {padding: 6px;
                  margin: 0px;
                  text-align: center;
                  color: #666666; }
        </STYLE>
<table font-family='Times New Roman' width='90%' border='0' align='center' cellpadding='0' cellspacing='0'>
        <tr>
            <th colspan='3'>CAVECERA DE LA TABLA</th>
        </tr>
        <tr>
            <th colspan='3'>MENSAJE AUTOMÁTICO</th>
        </tr>
        <tr>
            <td align='right'>ASUNTO:</td>
            <td width='12'>&nbsp;</td>
            <td align='left'>
                    ESTE ES MI ASUNTO.
            </td>
        </tr>
        <tr>
            <td align='right'>MENSAJE:</td>
            <td>&nbsp;</td>
            <td align='left'>ESTE ES EL MENSAJE QUE TE ENVÍO</td>
        </tr>
    </table>
</body>
</html>";
           
$headers = array ('From' => "juanbarrospazos@hotmail.es",
                'Subject' => "NOTIFICACION WEB CV GRATUITA");
                $destinatario= "Mi_Mail@hotmail.es";
                $titulo= "NOTIFICACION WEB CV GRATUITA";
                $responder= " Mi_Mail @hotmail.es";
                $remite= " Mi_Mail @hotmail.es";
                $remitente= "MENSAJE GENERADO AUTOMATICAMENTE";
                $separador = "_separador".md5 (uniqid (rand()));
                $cabecera = "Date: ".date('l j F Y, G:i')."\n";
                $cabecera .="MIME-Version: 1.0\n";
                $cabecera .="From: ".$remitente."<".$remite.">\n";
                $cabecera .="Return-path: ". $remite."\n";
                $cabecera .= "Reply-To: ".$remite."\n";
                $cabecera .="X-Mailer: PHP/". phpversion()."\n";
                $cabecera .= "Content-Type: multipart/mixed;"."\n";
                $cabecera .= " boundary=$separador"."\r\n\r\n";    /**/
                $texto_html ="\n"."--$separador"."\n";            /**/
                $texto_html .="Content-Type:text/html; charset=\'utf-8\'"."\n";
                $texto_html .="Content-Transfer-Encoding: 7bit"."\r\n\r\n";
                $texto_html .= $text_body;
                $mensaje= $texto_html;
if( mail($destinatario, $titulo, $mensaje, $cabecera)){print("* MAIL ENVIADO OK 4");
    }else{print("* MAIL NO ENVIADO");}

 } // Fin function mens()

2 comentarios:

Gracias por vuestros aportes.