Como enviar emails autenticados e TLS de um site (Python / Php)
Enviar e-mail de um site por meio de um relay autenticado
Neste tutorial, explicamos como construir um script em python para poder enviar e-mails de sites.
Os e-mails são enviados através de um retransmissor do Corpmail, Outlook ou Gmail, e você deve especificar a conta de e-mail e a senha que será usada para autenticar o revezamento. Essa autenticação é conhecida como SASL, que é uma estrutura de autenticação para poder enviar e-mails no nome de uma determinada conta de e-mail. Por sua vez, garantimos que o e-mail seja criptografado com o protocolo TLS para garantir a privacidade do e-mail.
Como montar o script Python
O roteiro que vamos criar é curto e fácil de entender. Este script é semelhante para todos os domínios, que são o domínio de corpmail, gmail e outlook. A única diferença que existe é o servidor.
A parte do código em que diz Código para cada provedor de e-mail, é aí que temos que adicionar essas três linhas específicas de cada domínio.
Na seção msg [‘To’] podemos definir qualquer endereço de email para o qual queremos enviar a mensagem.
#!/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 provedor 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']))
Correio do corpmail
No e-mail do corpmail, com o domínio .planisys.com, o servidor que temos que definir é o mail.planisys.net com a porta 587. Na linha seguinte, definimos o correio eletrônico do qual as mensagens serão enviadas. Em seguida, introduzimos a senha deste e-mail. Desta forma, armaremos a parte de enviar mensagens com o domínio @ planisys.com
#CORPMAIL server = smtplib.SMTP('mail.planisys.net: 587') msg['From'] = "******@planisys.com" password = "*****"
Correio de Outlook
Para o e-mail do Outlook, seguimos a mesma receita que para o correio de corpmail, apenas alterando o servidor.
#OUTLOOK server = smtplib.SMTP('smtp.live.com: 587') msg['From'] = "********@outlook.com" password = "**********"
Correio do gmail
Os e-mails do Gmail seguem a mesma estrutura que os outros na parte do script, mas têm uma diferença nas configurações de segurança.
Para poder enviar e-mails do script com o domínio do Gmail, precisamos ativar a parte de Permitir aplicativos menos seguros. Com o seguinte link https://myaccount.google.com/security?pli=1, entramos na parte de configuração de segurança. Em seguida, procuramos uma caixa onde diz “Permitir aplicativos menos seguros”, sua configuração deve ser assim:
A parte do código é a seguinte:
#GMAIL server = smtplib.SMTP('smtp.gmail.com: 587') msg['From'] = "******@gmail.com" password = "*********"
Como construir o script PHP
Para o script php é necessário ter a classe phpmailer.php, esta classe é open source, pode ser facilmente encontrada online. Nós tentamos, nós baixamos esta classe do seguinte link https://github.com/KyleAMathews/phpmailer/blob/master/class.phpmailer.php.
O código php será o mesmo para os diferentes tipos de servidor de email, apenas alterando o servidor que podemos enviar o email.
<?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.'; } ?>