Hay que instalar una cosa:
python3 -m pip install py3-validate-emailY ya puedes ejecutar el script:
python3 tarea3.py| from validate_email import validate_email | |
| import sys | |
| # Importamos los módulos que necesitamos de la librería email | |
| from email.mime.multipart import MIMEMultipart | |
| from email.mime.text import MIMEText | |
| from email.mime.application import MIMEApplication | |
| # Importamos la librería smtplib | |
| import smtplib | |
| print("Crea un archivo PDF con tu nombre y tu DNI, y guárdalo en el directorio donde está este script.") | |
| print("Debe llamarse documento.pdf") | |
| print("Puedes mirar mi ejemplo, pero para tu caso, borra el que hay aquí, y crea el tuyo.") | |
| print() | |
| document_confirm = input("Escribe \"hecho\" para confirmar: ") | |
| if document_confirm != "hecho": | |
| print("Completa lo de antes, y vuelve a ejecutar el script.") | |
| sys.exit(1) | |
| print("Introduce tu nombre de usuario de la UPV (lo que va delante de @teleco.upv.es).") | |
| username = input() | |
| email_from = f"{username}@teleco.upv.es" | |
| print() | |
| full_name = input("Introduce tu nombre completo:") | |
| print() | |
| dni = input("Introduce tu DNI con letra: ") | |
| print() | |
| password = None | |
| while password is None: | |
| print("Introduce tu contraseña del correo de la UPV.") | |
| print("Esta no es la misma que la que se usa para acceder a PoliformaT o la intranet.") | |
| print("Si no tienes ni idea de cuál es, escribe 'ni idea'.") | |
| password = input() | |
| if password == "ni idea": | |
| password = None | |
| print("Menudo tonto jaja, anda, ve a la intranet (https://intranet.upv.es),") | |
| print(" y en la sección Servicios > Correo electrónico > Utilidades.") | |
| print("Dentro, ve a la sección Utilidades > Cambiar contraseña de correo") | |
| print("Ahí dentro la puedes cambiar.") | |
| print() | |
| input("Cuando lo tengas, pulsa enter y te vuelvo a preguntar.") | |
| # Creamos el objeto de la clase mensaje MIME Multipart | |
| msg = MIMEMultipart("mixed", "frontera") | |
| print("Vale, pues ya estaría todo, ahora introduce el correo al que quieres mandar la tarea.") | |
| print("Yo te recomiendo que te lo mandes antes a ti para asegurarte que no la has liado.") | |
| print("Pero se necesita gente con cohone, así que si tienes huevos mándalo directamente.") | |
| print("El correo del profe para la tarea es: [email protected]") | |
| print() | |
| while True: | |
| email_to = input("Destinatario: ") | |
| es_valido = validate_email( | |
| email_address=email_to, | |
| check_format=True, | |
| check_blacklist=False, | |
| check_dns=False, | |
| check_smtp=False | |
| ) | |
| if es_valido: | |
| break | |
| else: | |
| print("Dirección Incorrecta. Introduzca la dirección de destino de nuevo.") | |
| msg.add_header('From', email_from) | |
| msg.add_header('To', email_to) | |
| msg.add_header('Subject', input("Asunto: ")) | |
| # Adjuntamos el texto | |
| parte_texto = MIMEText(f'{full_name} {dni}', "plain", "utf-8") | |
| msg.attach(parte_texto) | |
| # Adjuntamos la imagen | |
| fName = "documento.pdf" | |
| subtipo = "pdf" | |
| try: | |
| file = open(fName, 'rb') | |
| adjunto = MIMEApplication(file.read(), subtipo) | |
| adjunto.add_header('Content-Disposition', 'attachment; filename = \"'+fName+'\"') | |
| msg.attach(adjunto) | |
| file.close() | |
| except OSError as e: | |
| print(e) | |
| print("Correo no enviado") | |
| sys.exit() | |
| except: | |
| print("Correo no enviado") | |
| sys.exit() | |
| # Enviamos el correo electrónico utilizando el protocolo SMTP | |
| try: | |
| # Establecemos la conexion con el servidor smtp de la UPV | |
| mailServer = smtplib.SMTP("smtp.upv.es", 587) | |
| mailServer.ehlo() | |
| mailServer.starttls() | |
| mailServer.login(user=username, password=password) | |
| # Enviamos el mensaje | |
| mailServer.sendmail(email_from, email_to, msg.as_string()) | |
| # Cierre de la conexión | |
| mailServer.quit() | |
| print("Correo electrónico enviado") | |
| except smtplib.SMTPException as e: | |
| print("Se ha producido un error STMP: "+str(e)) | |
| print("Correo electrónico no enviado") |