En esta lección, compartiré el script que utilizo para enviar correos electrónicos a los usuarios de las aplicaciones que hago y más.
Lo que estaremos haciendo?
Crearemos un programa simple de Python que hará lo siguiente:
Estos puntos hacen que este programa sea mucho más cerca de un uso de la vida real de enviar correos electrónicos en sus aplicaciones. Empecemos.
Archivo para correos electrónicos
El archivo que contiene los correos electrónicos para los usuarios se verá así:
Shubham Shubham.có[email protected]
Este es solo un archivo de texto simple que contiene el nombre del usuario y el correo electrónico separados por el espacio. Se han puesto múltiples correos electrónicos con los datos de cada usuario en una nueva línea. Llamamos este archivo usuarios.TXT.
Usando la plantilla
Definamos rápidamente la plantilla que usaremos en nuestro script para reemplazar los valores:
Hola $ Person_name,
Enviamos este correo electrónico con el módulo Python SMTPLIB. Guay, verdad?
Que tengas un día brillante por delante!
Salud
Hemos usado una cadena de plantilla $ Persona_name que será reemplazado por el nombre de la persona que obtenemos de los usuarios.archivo txt mientras envía el correo electrónico.
Obtener datos de usuario del archivo
El primer paso para enviar correos electrónicos a un usuario es identificar dónde queremos enviar los correos electrónicos a. Escribamos una función de Python que aceptará un nombre de archivo y devuelve el nombre de los usuarios de los Estados Unidos y las ID de correo electrónico donde se deben enviar los correos electrónicos:
Def get_users_data (file_name):
user_name = []
user_email = []
con open (file_name, mode = 'r', encoding = 'utf-8') como user_file:
para user_info en user_file:
nombre de usuario.append (user_info.Split () [0])
Usuario_mail.append (user_info.Split () [1])
devolver user_name, user_email
Con esta función, solo devolvemos los nombres y correos electrónicos del usuario que obtenemos el archivo del archivo.
Obtener el objeto de plantilla
Ahora, podemos analizar nuestra plantilla y obtener un objeto de plantilla del archivo de texto que hicimos:
def read_template (file_name):
con open (file_name, 'r', encoding = 'utf-8') como msg_template:
msg_template_content = msg_template.leer()
Plantilla de retorno (msg_template_content)
Con esto, recuperaremos un objeto de plantilla que podemos usar para analizar el contenido del archivo y hacer los reemplazos necesarios para las cadenas de plantilla como el nombre de un usuario.
Cómo se realiza el envío de correo electrónico?
Ahora que estamos listos con el diseño de la plantilla y los datos del usuario, debemos entender cómo se envía un correo electrónico al usuario:
Configuración de la conexión SMTP
Finalmente definamos la función que enviará el correo electrónico a los usuarios designados. Aquí está la función:
Def Main ()::
user_name, user_email = get_users_data ('usuarios.txt ') # leer detalles del usuario
Message_template = read_template ('mensaje.TXT')
# Configure el servidor SMTP
SMTPLIB_SERVER = SMTPLIB.Smtp (host = 'smtp.gmail.com ', puerto = 587)
smtplib_server.starttls ()
smtplib_server.Login (send_from, correo electrónico_pwd)
# Obtenga cada detalle del usuario y envíe el correo electrónico:
Para el nombre, correo electrónico en zip (user_name, user_email):
multipart_message = mimemultipart () # Crear un mensaje
# Agregue el nombre de la persona real a la plantilla de mensaje
msg = message_template.sustituto (persona_name = nombre.título())
# Imprime el cuerpo del mensaje por nuestro bien
Imprimir (MSG)
# Configurar los parámetros del mensaje
multipart_message ['from'] = send_from
multipart_message ['a'] = correo electrónico
multipart_message ['sujeto'] = "Correo electrónico de Linuxhint"
# Agregue el cuerpo del mensaje
multipart_message.Adjuntar (mimetext (msg, 'sencillo'))
# Enviar el mensaje a través de la configuración del servidor anteriormente.
smtplib_server.send_message (multipart_message)
Del multipart_message
# Terminar la sesión SMTP y cerrar la conexión
smtplib_server.abandonar()
En la función anterior, seguimos cada paso que declaramos en la sección anterior. Construimos la conexión SMTP y la usamos para enviar el correo electrónico.
Programa completo
En la sección final, echemos un vistazo al programa completo que se puede usar para enviar el correo electrónico al usuario designado:
Importar SMTPLIB
De la plantilla de importación de cadenas
desde el e-mail.mímica.importación multipart mimemultipart
desde el e-mail.mímica.Mimetexto de importación de texto
Send_from = 'my-email-nere'
Email_pwd = 'my-password-here'
Def get_users_data (file_name):
user_name = []
user_email = []
con open (file_name, mode = 'r', encoding = 'utf-8') como user_file:
para user_info en user_file:
nombre de usuario.append (user_info.Split () [0])
Usuario_mail.append (user_info.Split () [1])
devolver user_name, user_email
def read_template (file_name):
con open (file_name, 'r', encoding = 'utf-8') como msg_template:
msg_template_content = msg_template.leer()
Plantilla de retorno (msg_template_content)
Def Main ()::
user_name, user_email = get_users_data ('usuarios.txt ') # leer detalles del usuario
Message_template = read_template ('mensaje.TXT')
# Configure el servidor SMTP
SMTPLIB_SERVER = SMTPLIB.Smtp (host = 'smtp.gmail.com ', puerto = 587)
smtplib_server.starttls ()
smtplib_server.Login (send_from, correo electrónico_pwd)
# Obtenga cada detalle del usuario y envíe el correo electrónico:
Para el nombre, correo electrónico en zip (user_name, user_email):
multipart_message = mimemultipart () # Crear un mensaje
# Agregue el nombre de la persona real a la plantilla de mensaje
msg = message_template.sustituto (persona_name = nombre.título())
# Imprime el cuerpo del mensaje por nuestro bien
Imprimir (MSG)
# Configurar los parámetros del mensaje
multipart_message ['from'] = send_from
multipart_message ['a'] = correo electrónico
multipart_message ['sujeto'] = "Correo electrónico de Linuxhint"
# Agregue el cuerpo del mensaje
multipart_message.Adjuntar (mimetext (msg, 'sencillo'))
# Enviar el mensaje a través de la configuración del servidor anteriormente.
smtplib_server.send_message (multipart_message)
Del multipart_message
# Terminar la sesión SMTP y cerrar la conexión
smtplib_server.abandonar()
Si __name__ == '__main__':
principal()
Cuando ejecutamos este programa con una ID de Gmail, puede enfrentar un problema como este:
Error de gmail smtp
Conclusión
En esta lección, observamos cómo podemos enviar correos electrónicos usando Python's smtplib módulo.