 
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
from PyQt5.QtGui import QColor,QPalette,QFont,QTextOption,QTextDocument,QTextCursor
from PyQt5.QtWidgets import QApplication,QWidget,QLineEdit,QLabel,QPushButton,QHBoxLayout,QVBoxLayout,QCheckBox,QComboBox,QTextEdit
from PyQt5.QtCore import Qt,pyqtSignal,QObject,QThread,QRunnable
from PyQt5.Qt import QMetaType
import sys
import threading
import time
import datetime
from colorama import Fore, Back, Style
import nmap
import os
import psutil

class Worker(QObject,QRunnable): #Aqui hacemos herencia de clases que vienen ya integradas en pyqt5
	finished = pyqtSignal()
	progressed = pyqtSignal()
	finished_lista=[pyqtSignal()]    
	siguiente = pyqtSignal()

	aux=0
	#metodo constructor
	"""
		Todo lo que dice self esa palabra hace referencia ala propia clase en este caso hace referencia a la clase Worjer
		1 contador_hilo  que sirve para contar los hilos que se vayan generando por defecto el primer hilo esta inicializado en 1
	"""

	def __init__(self,contador_hilo,textarea_proceso,label_proceso_verificacion=None,label_proceso_verificacion2=None,parent=None):
		self.contador_hilo=contador_hilo
		self.textarea_proceso=textarea_proceso
		self.label_proceso_verificacion=label_proceso_verificacion
		self.label_proceso_verificacion2=label_proceso_verificacion2
		super().__init__(parent)
		 																	# en esta parte llamamo al constructor padre es decir llamamo al __init__ pero no de esta clase 
																									#si no de la clase QObject
	def run(self):  	
		print("CONTADOR HILO WORKER"+str(self.contador_hilo))
		print(str(QThread.currentThread().objectName()))															#metodo run es un metodo especial que nos ayuda a ejecutar varios hilos al mismo tiempo 
		if self.contador_hilo == 1:  																#verificamos que el contador sea igual a 1 si es asi ejecuta lo que se encuantra adentro
																									#por defecto los elementos textedit de pyqt5 no puede extraerse directamente su contenido 
																									#por lo cual invocamos al metodo textCursor
			self.contador_hilo=self.contador_hilo+1													#incrementamos el valor de la variable contador_hilo
			self.textarea_proceso.append("INICIANDO HILO DE EJECUCION......") 						#agrega el texto al textedit
					        												#en este caso de 1 en 1 hasta llegar a 19			
			for _i in range(0,100): 																	#sentencia for sirve para incrementar la variable puedes ver que la variavle cone el nombre _I incrementa 
				print("MITIENDO--->"+str(_i+1))
				time.sleep(0.1)
				self.label_proceso_verificacion.setText(self.label_proceso_verificacion.text()+"x") #asignamos texto al lebel con el nombre
																												#proceso_verificacion  la letra x se va ir añadiendo conforme  la variable _I vaya incrementandose
																						#aignamos un tiempo de espara po cada iteracion del bucle for
			self.finished.emit()
							
		elif self.contador_hilo==2:
			self.contador_hilo=self.contador_hilo+1
			self.textarea_proceso.append("VERIFICANDO TU EMAIL Y PASSOWRD......")
			for _i in range(0,100): 																	#sentencia for sirve para incrementar la variable puedes ver que la variavle cone el nombre _I incrementa 
				print("MITIENDO___2--->"+str(_i+1))
				time.sleep(0.1)
				self.label_proceso_verificacion2.setText(self.label_proceso_verificacion2.text()+"x") #asignamos texto al lebel con el nombre
			

			self.finished.emit()
		elif self.contador_hilo==3:
			time.sleep(0.2)
			self.textarea_proceso.append("VERIFICANDO QUE EL CORREO SOLO TENGA UNA ARROBA.....")
			self.contador_hilo=self.contador_hilo+1
		
	


class main_principal(QWidget):
	fecha_actual = datetime.datetime.now() # datetime es la libreria que nos ayuda con las fechas horas minutos y hsta segundos
	#en este caso nos referimos a que nos de la fecha actual
	contador_hilo=1
	cursor=None
	lista_hilos=[]
	def banner_anonymous(self):
		#banner un bannner es solo un mensaje de texto
		#el       \32 es para indicarle que queremos un espacio en blanco
		#puedes ver que hay muchos \32 en este paratado eso es debido a que 
		#se necesitan espacios para imprimir bien el banner
		self.textarea_proceso.append("$$$$$\32$\32\32\32\32$\32\32$$$$$\32$\32\32\32\32\32$$$$$$$\32\32\32\32\32\32######\32#####\32######\32##\32\32\32##")
		self.textarea_proceso.append("$\32\32\32\32\32\32\32\32$\32\32\32\32$\32\32\32\32\32$\32\32\32\32$\32\32\32\32\32$\32\32\32\32\32$\32\32\32\32\32$\32\32\32\32\32\32#\32\32\32\32\32\32#")
		self.textarea_proceso.append("$$$$$\32\32\32$\32\32\32\32\32$$$$$\32$\32\32\32\32\32$\32\32\32\32\32$||||||\32\32\32\32\32######\32#####\32######\32#\32\32\32\32\32#")
		self.textarea_proceso.append("$\32\32\32\32\32\32$\32\32$\32\32\32$\32\32\32\32\32$\32\32\32\32\32$\32\32\32\32\32\32$\32\32\32\32\32\32\32\32\32\32\32#|#\32\32\32\32\32#\32\32\32\32#\32#\32\32\32\32\32#")
		self.textarea_proceso.append("$$$$$\32$\32\32\32\32$\32\32$\32\32\32\32\32$$$$$\32$$$$$$$\32\32\32\32\32\32######\32#\32\32\32\32\32#\32\32\32\32#\32#\32\32\32\32\32#")
		self.textarea_proceso.append("Autor: Aldair Martinez Alias Hans Krammler Junior") # Aqui declaramos mi nombre jajaj XD
	def spam_uno_a_uno(self):
		self.banner_anonymous()
		print(self.fecha_actual)
	def spam_uno_a_varios(self):
		self.banner_anonymous()
		print(self.fecha_actual)
		print(Fore.GREEN+"HAZ ELEGIDO ENVIAR DESDE TU COREO A OTROS CORREO")


	def mensaje(self):
		print("SE TERMINO EL HILO")
	

	contador_hilo_aux=0
	lista_hilos=[]
	workers=[]
	threads=[]
	def incializa_hilos(self):
		if self.contador_hilo==1:
			self.thread = QThread()
			self.thread.setObjectName("Hilo_1")
			self.worker = Worker(self.contador_hilo,self.textarea_proceso,self.label_proceso_verificacion,None)
			self.worker.moveToThread(self.thread)
			self.thread.setTerminationEnabled(True)
			self.thread.started.connect(self.worker.run)
			self.worker.finished.connect(self.terminado)
			self.thread.finished.connect(lambda :self.verificar_resultado_hilo(self.thread))
			self.worker.progressed.connect(lambda:self.reportProgress(self.worker))		
			self.worker.siguiente.connect(lambda:self.siguiente_hilo(self.thread))
			self.thread.finished.connect(self.thread.quit)
			self.lista_hilos.append(self.thread)
			return self.lista_hilos
		else:
			self.lista_hilos=[]
			self.threads.append(QThread())
			self.threads[self.contador_hilo_aux].setObjectName("Hilo_2")
			if self.contador_hilo==2:
				print("Aqui tambien funciona")
				self.workers.append(Worker(self.contador_hilo,self.textarea_proceso,None,self.label_proceso_verificacion2))
			elif self.contador_hilo==3:
				self.workers.append(Worker(self.contador_hilo,self.textarea_proceso,None,self.label_proceso_verificacion3))
			self.workers[self.contador_hilo_aux].moveToThread(self.threads[self.contador_hilo_aux])
			self.threads[self.contador_hilo_aux].started.connect(self.workers[self.contador_hilo_aux].run)
			self.workers[self.contador_hilo_aux].finished.connect(self.terminado)
			print("Pasando terminado")
			self.threads[self.contador_hilo_aux].finished.connect(lambda :self.verificar_resultado_hilo(self.threads[self.contador_hilo_aux]))
			print("Pasando verificar resultado")
			self.workers[self.contador_hilo_aux].progressed.connect(lambda:self.reportProgress(self.workers[self.contador_hilo_aux]))
			print("Pasando reportprogress")
			self.workers[self.contador_hilo_aux].siguiente.connect(lambda:self.siguiente_hilo(self.threads[self.contador_hilo_aux]))
			self.threads[self.contador_hilo_aux].finished.connect(self.threads[self.contador_hilo_aux].quit)
			print("Pasando quit")
			self.lista_hilos.append(self.threads[self.contador_hilo_aux])
			return self.lista_hilos
		return None

	def siguiente_hilo(self,hilo):
		if self.contador_hilo==1:
			if hilo.isRunning()==False:
				if hilo.isFinished()==True:
					print("si funciono")
					hilo.finished.connect(hilo.deleteLater)
					hilo.finished.connect(hilo.terminate)
					self.contador_hilo=self.contador_hilo+1
					self.incializa_hilos()[0].start()
		elif self.contador_hilo>1:
			if self.get_verificado()==-1:
				return -1
			elif self.get_verificado()==-2:
				return -2
			else:
				return -3	
			if  hilo.isRunning()==False:
				if hilo.isFinished()==True:
					self.contador_hilo=self.contador_hilo+1
					self.contador_hilo_aux=self.contador_hilo_aux+1
					self.incializa_hilos()[0].start()
		
		return 0

	cursor=None
	estado_hilo_x=0
	lista_verificado=[]
	def set_verificado(self,estado):
		self.estado_hilo_x=estado
	def get_verificado(self):
		self.lista_verificado.append(self.estado_hilo_x)
		print("get.lista.verificado"+ str(self.lista_verificado[0]))
		return int(self.lista_verificado[0])

	def terminado(self):
		if self.contador_hilo==1:
			print("TRABAJO TERMINADO")
			self.thread.finished.emit()
		elif self.contador_hilo>1:
			self.threads[self.contador_hilo_aux].finished.emit()

	def verificar_resultado_hilo(self,thread):
		if self.contador_hilo==1:
			if self.thread.isRunning()==False:	
				print("EL HILO 1 HA TERMINADO SU TAREA")
			if self.thread.isFinished()==True:
				print("EL HILI 1 TERMINO CON EXITO")		
				self.worker.progressed.emit()
		elif self.contador_hilo>1:
			print(str(self.contador_hilo_aux))
			if thread.isRunning()==False:
				print("EL HILO"+str(self.contador_hilo_aux)+"ESTA CORRIENDO")
			if thread.isFinished()==True:
				print("EL HILO"+str(self.contador_hilo_aux)+"HA TERMINADO")
				self.workers[self.contador_hilo_aux].progressed.emit()	


	porcentaje=10
	_i=0
	lista_progreso=["INICIANDO HILO DE EJECUCION......"]
	def reportProgress(self,worker):
		print(self.contador_hilo)
		if self.contador_hilo==1:
			print("REPORTANDO HILO")
			#print("POSICION ACTUAL DEL CURSOR"+str(int(self.textarea_proceso.textCursor().position())))	
			worker.siguiente.emit()
		else:
			if self.contador_hilo==2:
				email=self.line_edit_user_email.text()
				password =self.line_edit_user_password.text()
				longitud_email=len(email)
				longitud_password=len(password)
				if longitud_email == 0 or longitud_password == 0:
					
					self.set_verificado(-1)
			elif self.contador_hilo==3:
				email=self.line_edit_user_email.text()
				email_to_list=list(email)
				contador=1
				for _x in len(email):
					if email_to_list[_x] == "@":
						contador=contador+1
				if contador>1:
					self.set_verificado(-2)
			elif self.contador_hilo==4:
				contador=1
				email_dominio=email.split(".")
				textarea_proceso.append("DIVIDIENDO TU EMAIL--->"+email_dominio)
				longitud_dominio_email=len(email_dominio)
				textarea_proceso.append("VERIFICANDO COINCIDENCIA DE DOMINIO DE EMAIL....")
				dominios=["gmail.com","outlook.com","outlook.es","hotmail.com","hotmail.mx","hotmail.es"]
				longitud_dominio_gmail=len(dominios[0])
				longitud_dominio_outlook_com=len (dominios[1])
				longitud_dominio_outlook_es=len(dominios[2])
				longitud_dominio_hotmail_com=len(dominios[3])
				longitud_dominio_hotmail_mx=len(dominios[4])
				longitud_dominio_hotmail_es=len(dominios[5])
				for _i in range(longitud_dominio_email):
					for _j in (range(longitud_dominio_gmail) or range(longitud_dominio_outlook_com) or range(longitud_dominio_outlook_es) or range(longitud_dominio_hotmail_com) 
			    			    or range(longitud_dominio_hotmail_mx) or range(longitud_dominio_hotmail_es)):
						if _j < longitud_dominio_gmail:
							if dominios[0][_j] == email_dominio[1][_j]:
								print(dominios[0][j])
								contador=contador+1
						elif _j < longitud_dominio_outlook_com:
							if dominios[1][_j] == email_dominio[1][_j]:
								contador=contador+1
						elif _j < longitud_dominio_outlook_es:
							if dominios[2][_j] == email_dominio[1][_j]:
								contador=contador+1
						elif _j < longitud_dominio_hotmail_com:
							if dominios[3][_j] == email_dominio[1][_j]:
								contador=contador+1
						elif _j < longitud_dominio_hotmail_mx:
							if dominios[4][_j] == email_dominio[1][_j]:
								contador=contador+1
						elif _j < longitud_dominio_hotmail_es:
							if dominios[5][_j]== email_dominio[1][_j]:
								contador=contador+1
					if contador> longitud_dominio_gmail:
						return -3
					else:
						contador=1
			print("AQUI MEN")
			posicion_textarea=len(self.lista_progreso[self._i])
			self.cursor= self.textarea_proceso.textCursor()
			print("CURSOR ACTUAL"+ str(self.cursor))
			print("POSICION CURSOR ACTUAL++"+ str(self.cursor.position()))
			if self.cursor.atEnd()==True:
				print("FIN DEL CURSOR True")
				print("TEXTO SELECCIONADO ANTES"+self.cursor.selectedText())
				posicion_inicial=(self.cursor.position()-1)-(posicion_textarea-1)+1
				print("posicion inicial"+str(posicion_inicial))
				time.sleep(0.4)
				self.cursor.setPosition(posicion_inicial,QTextCursor.KeepAnchor)
				print("TEXTO SELECCIONADO AHORA"+self.cursor.selectedText())
				print("POSICION CURSOR ACTUAL--"+str(self.cursor.position()))
				self.progreso=self.cursor.selectedText()+str(self.porcentaje)
				self.porcentaje=self.porcentaje+10
				self.textarea_proceso.append(self.progreso)
				print("POSICION CURSOR ACTUAL++"+ str(self.cursor.position()))
			self._i=self._i+1
			worker.siguiente.emit()
	def verificar_opcion(self):
		pass		
	def validar_oprciones(self):
		if self.checkbox_opcion_spam_uno_a_uno.isChecked()==True and self.checkbox_opcion_spam_uno_a_varios.isChecked():
			self.label_estado_proceso.setText(Fore.RED+"LO SIENTO NO PUEDES SELECCIONAR DOS OPCIONES A LA VEZ")
			return False
		else:
			return True
	def escannear_red(self):
		scan=nmap.PortScanner()
		informacion_sistema=os.uname()
	def presionado(self):
		resultado_validar_opciones=self.validar_oprciones()
		if resultado_validar_opciones==True:
			self.inciar_hilo_principal()
			self.resultado_verificacion_email=0
			if self.resultado_verificacion_email==0:
				print("PASANDO AL SIGUIENTE HILO DE EJECUCION")
			if self.resultado_verificacion_email==1:
				if self.checkbox_opcion_spam_uno_a_uno.isChecked()==True:
					print("LAS OCPIONES SELECCIONADAAS EN LOS CASILLA SON VALIDAS")
			else:
				if self.resultado_verificacion_email==-1 or self.resultado_verificacion_email==-2 or self.resultado_verificacion_email==-3:
					if self.resultado_verificacion_email==-1:
						self.label_estado_proceso.setText("NO HAS INGRESADO NADA EN EL PRIMER CAMPO")
						self.textarea_proceso.append("ERROR NO HAS INGRESADO NADA EN EL PRIMER CAMPO")
					elif self.resultado_verificacion_email==-2:
						self.label_estado_proceso.setText("HAS MAS DE UN ARROBA EN TU CORREO")
						self.textarea_proceso.append("ERROR HAY MAS DE UN ARROBA EN TU CORREO")
					elif self.resultado_verificacion_email==-3:
						self.label_estado_proceso.setText("TERMINACION DE CORREO NO VALIDA")

		else:
			self.textarea_proceso.append("INTENTE DE NUEVO RELLENAR LOS CAMPOS ADECUADAMENTE")


	def __init__(self,parent=None):
		#Parte de intefaz grafica 
		super().__init__(parent)

		self.color=QColor(0,0,0,0.5)
		self.setGeometry(550,100,1500,500)
		self.pallette=QPalette(self.color)
		self.pallette.setColor(QPalette.Text, Qt.cyan)
		
		self.titulo_ventana="ENVIO DE CORREO PARA HACER SPAM"
		self.setWindowTitle(self.titulo_ventana)
		self.setStyleSheet("border-color: cyan; border-style: dashed; border-width: 2px; color:white")
		self.setPalette(self.pallette)
		self.checkbox_opcion_spam_uno_a_uno=QCheckBox("REALIZAR SPAM UNO A UN CORREO")
		self.checkbox_opcion_spam_uno_a_uno.clicked.connect(self.spam_uno_a_uno)
		self.checkbox_opcion_spam_uno_a_varios=QCheckBox("REALIZAR SPAM UNO A VARIOS COOREOS")
		self.checkbox_opcion_spam_uno_a_varios.clicked.connect(self.spam_uno_a_varios)

		
		self.label_user_email=QLabel("Ingresa tu direccion de correo: ")
		self.label_user_email.setFont(QFont("Times",14,QFont.Bold,True))
		self.label_user_email.setStyleSheet("color: white")

		self.line_edit_user_email=QLineEdit(self)
		self.line_edit_user_email.setPlaceholderText("Ingresa tu direccion de cooreo:")
		self.line_edit_user_email.setFont(QFont("Times",14,QFont.Bold,True))
		self.line_edit_user_email.setStyleSheet("color : black")		

		self.label_user_password=QLabel("Ingresa tu password de correo")
		self.label_user_password.setFont(QFont("Times",14,QFont.Bold,True))
		self.label_user_password.setStyleSheet("color: white")

		self.line_edit_user_password=QLineEdit(self)
		self.line_edit_user_password.setPlaceholderText("Ingresa tu password de tu correo:")
		self.line_edit_user_password.setFont(QFont("Times",14,QFont.Bold,True))
		self.line_edit_user_password.setStyleSheet("color : black")		
		

		self.label_victima_email=QLabel("Ingresa direccion de correo destinatario: ")
		self.label_victima_email.setFont(QFont("Times",14,QFont.Bold,True))
		self.label_victima_email.setStyleSheet("color: white")

		self.line_edit_victima_email=QLineEdit(self)
		self.line_edit_victima_email.setPlaceholderText("Ingresa tu direccion de cooreo:")
		self.line_edit_victima_email.setFont(QFont("Times",14,QFont.Bold,True))
		self.line_edit_victima_email.setStyleSheet("color : black")				

		self.label_user_asunto=QLabel("Ingresa el asunto ")
		self.label_user_asunto.setFont(QFont("Times",14,QFont.Bold,True))
		self.label_user_asunto.setStyleSheet("color: white")

		self.line_edit_user_asunto=QLineEdit(self)
		self.line_edit_user_asunto.setPlaceholderText("Ingresa tu direccion de cooreo:")
		self.line_edit_user_asunto.setFont(QFont("Times",14,QFont.Bold,True))
		self.line_edit_user_asunto.setStyleSheet("color : black")			

		self.pushbutton_enviar=QPushButton("ENVIAR SPAM")
		self.pushbutton_enviar.setFont(QFont("Times",14,QFont.Bold,True))
		self.pushbutton_enviar.setPalette(self.pallette)


		self.label_estado_proceso=QLabel("")
		self.label_estado_proceso.setText("ESPERANDO DATOS....")

		self.label_proceso=QLabel("Estado verificacion email y password")
		self.label_proceso_verificacion=QLabel("")
		self.label_proceso2=QLabel("Estado verificacion arroba de email origen y destino")
		self.label_proceso_verificacion2=QLabel("")
		self.label_proceso3=QLabel("Estado verificacion terminacion correo origen y destino")
		self.label_proceso_verificacion3=QLabel("")
		self.combobox_dominios_from=QComboBox()
		self.combobox_dominios_from.addItem("Gmail.com")
		self.combobox_dominios_from.insertSeparator(1)
		self.combobox_dominios_from.addItem("Outlook.com")
		self.combobox_dominios_from.addItem("Outlook.es")
		self.combobox_dominios_from.insertSeparator(4)
		self.combobox_dominios_from.addItem("Hotmail.com")
		self.combobox_dominios_from.addItem("Hotmail.es")
		self.combobox_dominios_from.addItem("Hotmail.mx")		
		self.combobox_dominios_from.setStyleSheet("background-color:black; color: cyan")

		self.combobox_dominios_to=QComboBox()
		self.combobox_dominios_to.addItem("Gmail.com")
		self.combobox_dominios_to.insertSeparator(1)
		self.combobox_dominios_to.addItem("Outlook.com")
		self.combobox_dominios_to.addItem("Outlook.es")
		self.combobox_dominios_to.insertSeparator(4)
		self.combobox_dominios_to.addItem("Hotmail.com")
		self.combobox_dominios_to.addItem("Hotmail.es")
		self.combobox_dominios_to.addItem("Hotmail.mx")
		self.combobox_dominios_to.setStyleSheet("background-color:black; color: cyan")

		self.combobox_dominios_from.currentTextChanged.connect(self.verificar_opcion)
		self.combobox_dominios_to.currentTextChanged.connect(self.verificar_opcion)
		self.pushbutton_enviar.clicked.connect(self.presionado)
		
		self.layout_main=QHBoxLayout(self)
		

		self.layout_principal=QVBoxLayout()
		self.layout_principal.addWidget(self.label_user_email)
		self.layout_principal.addWidget(self.line_edit_user_email)
		self.layout_principal.addWidget(self.label_user_password)
		self.layout_principal.addWidget(self.line_edit_user_password)
		self.layout_principal.addWidget(self.label_victima_email)
		self.layout_principal.addWidget(self.line_edit_victima_email)
		self.layout_principal.addWidget(self.label_user_asunto)
		self.layout_principal.addWidget(self.line_edit_user_asunto)
		self.layout_principal.addWidget(self.checkbox_opcion_spam_uno_a_uno)
		self.layout_principal.addWidget(self.checkbox_opcion_spam_uno_a_varios)
		self.layout_principal.addWidget(self.pushbutton_enviar)
		self.layout_principal.addWidget(self.label_estado_proceso)
		self.layout_principal.addWidget(self.combobox_dominios_from)
		self.layout_principal.addWidget(self.combobox_dominios_to)
		self.layout_principal.addWidget(self.label_proceso)
		self.layout_principal.addWidget(self.label_proceso_verificacion)
		self.layout_principal.addWidget(self.label_proceso2)
		self.layout_principal.addWidget(self.label_proceso_verificacion2)
		self.layout_principal.addWidget(self.label_proceso3)
		self.layout_principal.addWidget(self.label_proceso_verificacion3)
		
		self.layout_secundario=QVBoxLayout()
		self.textarea_proceso=QTextEdit()
		self.textarea_proceso.setPlaceholderText("ESPERANDO PARA PROCESAR")
		self.textarea_proceso.setFont(QFont("Times",14,QFont.Bold,True))
		self.textarea_proceso.setGeometry(0,0,500,400)
		self.textarea_proceso.setStyleSheet("color: yellow; background-color:black; border-style:solid")
		self.textarea_proceso.setReadOnly(False)
		self.textarea_proceso.setOverwriteMode(QTextEdit.WidgetWidth)
		self.layout_secundario.addWidget(self.textarea_proceso)
		
		self.layout_main.addLayout(self.layout_principal,4)
		self.layout_main.addLayout(self.layout_secundario,4)

	def inciar_hilo_principal(self):
		self.incializa_hilos()[0].start()
		return 0						
"""
#aqui es donde viene lo importante el envio del spam este es el metodo de oro 
#como puedes ver el primero metodo es para enviar de uno a uno
#mientras que el segundo metodo es para enviar de uno a varios
"""
"""
	def enviar_email_uno_a_uno(self):
		msg['From'] = self.line_edit_user_email.text() 
		password=self.line_edit_user_password.text()
		msg['To'] = self.line_edit_victima_email.text()
		msg['Subject'] = self.line_edit_asunto.text()
		msg.attach(MIMEText(message, 'plain'))
		try:
			if self.combobox_dominios_to.currentText()=="Gmail.com":				
				server = smtplib.SMTP('smtp.gmail.com: 587')
			elif self.combobox_dominios_to.currentText()=="Outlook.com":
				server = smtplib.SMTP('smtp.outlook.com: 587')
			elif self.combobox_dominios_to.currentText()=="Outlook.es":
				server = smtplib.SMTP('smtp.outlook.es: 587')
			elif self.combobox_dominios_to.currentText()=="Hotmail.com":		
				server = smtplib.SMTP("smtp.hotmail.com: 587")
		except smtplib.SMTPConnectError as conexion_rechazado:
			print(Font.RED+"ERROR EL ESTABLECIMIENTO DE LA CONEXION CON EL SERVIDOR SE HA RECHAZADO")


		server.starttls()
		server.login(msg['From'],password)
		server.sendmail(msg['From'], msg['To'], msg.as_string())
		server.quit()
		print ("successfully sent email to %s:" % (msg['To']))


"""

#sentencia main principal
if __name__ =="__main__":
	app = QApplication(sys.argv)
	instancia_ventana=main_principal()
	instancia_ventana.show()
	sys.exit(app.exec_())


