Hay que instalar una cosa:
python3 -m pip install py3-validate-email
Y 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") |