Enviar Correo desde un sitio web a través de un relay autenticado
En este tutorial se explica com armar un script en python, para poder enviar correos desde sitios web.
Los correos se envían a través de un relay de Corpmail, Outlook o Gmail , y se debe especificar la cuenta de mail y la clave que se van a utilizar para autenticarse ante el relay. Esta autenticación se conoce como SASL , que es un framework de autenticación para poder enviar mails a nombre de una determinada cuenta de mail. A su vez , aseguramos que el correo salga encriptado con el protocolo TLS para asegurar la privacidad del mail.
Como armar el script de Python
El script que vamos a crear es corto y fácil de entender. Este script es similar para todos los dominios, que son el dominio de corpmail, el de gmail y el de outlook. La única diferencia que hay, es servidor.
La parte del código donde pone Código para cada proveedor de correo, allá es donde tenemos que añadir esas tres lineas especificas de cada dominio.
En el apartado msg [‘To’] podemos definir cualquier dirección de mail a la que queremos enviar el mensaje.
#!/usr/bin/python from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText import smtplib msg = MIMEMultipart() message = "Prueba enviar mensaje" ------------------------------------------- *Código para cada proveedor de correo* ------------------------------------------- msg['To'] = "********" msg['Subject'] = "Prueba" msg.attach(MIMEText(message, 'plain')) server.starttls() server.login(msg['From'], password) server.sendmail(msg['From'], msg['To'], msg.as_string()) server.quit() print("successfull sent email to %s:" %(msg['To']))
Correo de corpmail
El el correo de corpmail, con el dominio .planisys.com, el servidor que tenemos que difinir es el mail.planisys.net con el puerto 587. En la siguiente linea definimos el correo electrónico desde cual se enviaran los mensajes. A continuación introducimos la contraseña de este correo. De esta manera armamos la parte de enviar mensajes con el dominio @planisys.com
#CORPMAIL server = smtplib.SMTP('mail.planisys.net: 587') msg['From'] = "******@planisys.com" password = "*****"
Correo de outlook
Para el correo de outlook seguimos la misma receta que para el correo de corpmail, sólo cambiando el servidor.
#OUTLOOK server = smtplib.SMTP('smtp.live.com: 587') msg['From'] = "********@outlook.com" password = "**********"
Correo de gmail
El correo de Gmail sigue la misma estructura que los otros en la parte del script, pero tiene diferencia en la configuración de seguridad.
Para poder enviar correos desde script con dominio de gmail, tenemos habilitar la parte de Allow less secure apps. Con el siguiente link https://myaccount.google.com/security?pli=1, entramos en la parte de configuración de la seguridad. A continuación buscamos una caja donde dice ‘Allow less secure apps’, su configuración tiene que quedar de esta manera:
La parte del código es la siguiente:
#GMAIL server = smtplib.SMTP('smtp.gmail.com: 587') msg['From'] = "******@gmail.com" password = "*********"
Como armar el script de PHP
Para el script en php es necesario tener la clase phpmailer.php, esta clase es de open source, se puede encontrar fácilmente por internet. Nosotros para probar, hemos descargado esta clase del siguiente link https://github.com/KyleAMathews/phpmailer/blob/master/class.phpmailer.php.
El código de php, será el mismo para diferentes tipos del servidor de correo, sólo cambiando el servidor podremos enviar los correo.
<?php require "class.phpmailer.php"; $mail = new PHPMailer(); //Luego tenemos que iniciar la validación por SMTP: $mail->IsSMTP(); $mail->SMTPAuth = true; -------------------------------------------------------------------------------------------------------------------------------------------------------------- //Servidor de gmail $mail->Host = "smtp.gmail.com"; // A RELLENAR. Aquí pondremos el SMTP a utilizar. Por ej. mail.midominio.com //Servidor de corpmail $mail->Host = "mail.planisys.net"; //Servidor de outlook $mail->Host = "smtp.live.com"; --------------------------------------------------------------------------------------------------------------------------------------------------------------- $mail->Username = "********************"; // A RELLENAR. Email de la cuenta de correo. ej.info@midominio.com La cuenta de correo debe ser creada previamente. $mail->Password = "********************"; // A RELLENAR. Aqui pondremos la contraseña de la cuenta de correo $mail->Port = 587; // Puerto de conexión al servidor de envio. $mail->From = "******************"; // A RELLENARDesde donde enviamos (Para mostrar). Puede ser el mismo que el email creado previamente. $mail->FromName = "*****"; //A RELLENAR Nombre a mostrar del remitente. $mail->AddAddress("*****************"); // Esta es la dirección a donde enviamos $mail->IsHTML(true); // El correo se envía como HTML $mail->Subject = 'Titulo'; // Este es el titulo del email. $body = 'Hola mundo. Esta es la primer línea'; $body .= 'Aquí continuamos el mensaje'; $mail->Body = $body; // Mensaje a enviar. $exito = $mail->Send(); // Envía el correo. if($mail) { echo 'El correo fue enviado correctamente.'; } else{ echo 'Hubo un problema. Contacta a un administrador.'; } ?>