Envio de correo
El envio de correo lo vamos a realizar desde una cuenta de gmail tu lo puedes realizar desde cualquier otro servidor SMTP de tu preferencia.Escribimos el siguiente código
# coding=utf-8
import tkinter as tk
import secrets
import string
import mysql.connector
import smtplib, ssl
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from tkinter import font, ttk
from tkinter import messagebox as mb
# Definir la función que se ejecutará cuando se haga clic en el botón
def enviar_password():
if (len(nombre.get().strip()) and len(apellidoPaterno.get().strip())
and len(email.get().strip()) and len(whatsapp.get().strip())):
password=Generar_password()
mydb = mysql.connector.connect(
host="localhost",
user="admin",
passwd="adminlara",
database="keygendb"
)
mycursor = mydb.cursor()
sql = "INSERT INTO usuario (nombre,apellido_paterno,apellido_materno,email,whatsapp,puesto,password) VALUES (%s,%s,%s,%s,%s,%s,%s)"
parameters=(nombre.get(),apellidoPaterno.get(),apellidoMaterno.get(),email.get(),
whatsapp.get(),puesto.get(),password)
mycursor.execute(sql, parameters)
mydb.commit()
mycursor.close()
mydb.close()
Enviar_email(nombre.get(),email.get(),password)
else:
mb.showerror("Error","Campo vacío")
def Generar_password():
letters = string.ascii_letters
digits = string.digits
special_chars = string.punctuation
alphabet = letters + digits + special_chars
pwd_length = 8
pwd = ''
for i in range(pwd_length):
pwd += ''.join(secrets.choice(alphabet))
return pwd
def Enviar_email(nombre,email,password):
context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.gmail.com",465,context=context) as server:
username="laralopezjosemartin@gmail.com"
password_email="tupassword"
server.login(username,password_email)
destinatario=email
asunto="Envio de password tutosoftware"
mensaje= MIMEMultipart("alternative")
mensaje["Subject"] = asunto
mensaje["From"]=username
mensaje["To"]=destinatario
html=f"""
<html>
<body>
<h1>{nombre}</h1>
<h2>Tu password es: {password}</h2>
</body>
</html>
"""
parte_html=MIMEText(html,"html")
mensaje.attach(parte_html)
server.sendmail(username,destinatario,mensaje.as_string())
mb.showinfo("Información", f"La contraseña {password} fue enviada")
# Crear la ventana principal
ventana = tk.Tk()
ventana.title("SendKeyGen")
ventana.geometry("500x600")
label = tk.Label(ventana, text="Sendkeygen")
label.pack(anchor="center")
label.config(fg="white", # Foreground
bg="gray", # Background
font=("Verdana",24))
# Crear los widgets del formulario
labelNombre=tk.Label(ventana, text="Nombre:")
labelNombre.pack(anchor="nw")
labelNombre.config(fg="white", # Foreground
bg="gray", # Background
font=("Verdana",14))
nombre = ttk.Entry(font=font.Font(family="Times", size=14),width=50)
nombre.pack(anchor="nw")
labelNombre=tk.Label(ventana, text="Apellido Paterno:")
labelNombre.pack(anchor="nw")
labelNombre.config(fg="white", # Foreground
bg="gray", # Background
font=("Verdana",14))
apellidoPaterno = ttk.Entry(font=font.Font(family="Times", size=14),width=50)
apellidoPaterno.pack(anchor="nw")
labelNombre=tk.Label(ventana, text="Apellido Materno:")
labelNombre.pack(anchor="nw")
labelNombre.config(fg="white", # Foreground
bg="gray", # Background
font=("Verdana",14))
apellidoMaterno = ttk.Entry(font=font.Font(family="Times", size=14),width=50)
apellidoMaterno.pack(anchor="nw")
labelNombre=tk.Label(ventana, text="Email:")
labelNombre.pack(anchor="nw")
labelNombre.config(fg="white", # Foreground
bg="gray", # Background
font=("Verdana",14))
email = ttk.Entry(font=font.Font(family="Times", size=14),width=50)
email.pack(anchor="nw")
labelNombre=tk.Label(ventana, text="WhatsApp:")
labelNombre.pack(anchor="nw")
labelNombre.config(fg="white", # Foreground
bg="gray", # Background
font=("Verdana",14))
whatsapp = ttk.Entry(font=font.Font(family="Times", size=14),width=15)
whatsapp.pack(anchor="nw")
labelNombre=tk.Label(ventana, text="Puesto:")
labelNombre.pack(anchor="nw")
labelNombre.config(fg="white", # Foreground
bg="gray", # Background
font=("Verdana",14))
puesto = ttk.Combobox(values=["Administrador", "Gerente", "Empleado"], font=font.Font(size=15))
puesto.current(0)
puesto.pack(anchor="nw")
boton_enviar = tk.Button(ventana, text="Enviar Password", command=enviar_password,
width=30, height=5,bg="gray",fg="white",font=("Comic Sans", 10,"bold"))
boton_enviar.pack(anchor="center")
# Mostrar la ventana
ventana.mainloop()
Enviando el correo
Correo recibido
Revisando el correo
Se va modificar hasta llegar al resultado final.