Envio de whatsapp

Para enviar whatsapp vamos a instalar pywhatkit
 
   
        
        pip install pywhatkit
        
     
   

Requisitos para el uso de pywhatkit
Además de la instalación de pywhatkit es necesario haber iniciado sesión en la versión de web de WhatsApp, debido a que el programa enviará el mensaje a través de esta. Por lo que será necesario que el teléfono asociado se mantenga en la misma red que el ordenador. Algo que en algunos casos puede ser una limitación de cara a usar el programa.
En esta aplicación vamos a tener que dar enter para que se envie el mensaje.
Escribimos el siguiente código
 
   
  import tkinter as tk
import secrets
import string
import mysql.connector
import pywhatkit
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)
        Enviar_Whatsapp(whatsapp.get(),password)
        Limpiar_formulario()
    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())


def Enviar_Whatsapp(telefono,password):
    mensaje=f"La contraseña de tutosoftware es {password}"
    pywhatkit.sendwhatmsg_instantly(telefono,mensaje,30,True,15)
    mb.showinfo("Información", f"La contraseña {password} fue enviada")

def Limpiar_formulario():
    nombre.delete(0,'end')
    apellidoPaterno.delete(0,'end')
    apellidoMaterno.delete(0,'end')
    email.delete(0,'end')
    whatsapp.delete(0,'end')





# 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:(+52xxxxxxxxxx)")
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 Whatsapp

phyton project
Se abre whatsapp y presionamos enter para que envie el mensaje sino se cierra y no se envia nada(Human Task)
phyton project
Se mando el whats
phyton project
phyton project

Conclusión

Esta es la primera vez que me realizo algo en python es un lenguaje de muy alto nivel en el cuál se pueden realizar cosas de manera muy rápida y potente además que hay bastante información en la web.