コード例 #1
0
    def __init__(self, nom_informe):
        QtGui.QWidget.__init__(self)
        self.ui = Ui_Form()
        self.ui.setupUi(self)

        self.show()
        self.ui.label_NomArchAdjunto.setText(nom_informe)
        self.nom_informe = nom_informe
        self.setSignal()
コード例 #2
0
class Enviar_informe_email(QtGui.QWidget):
    def __init__(self, nom_informe):
        QtGui.QWidget.__init__(self)
        self.ui = Ui_Form()
        self.ui.setupUi(self)

        self.show()
        self.ui.label_NomArchAdjunto.setText(nom_informe)
        self.nom_informe = nom_informe
        self.setSignal()

    def setSignal(self):
        self.ui.pushButton_Cancelar.clicked.connect(self.salir)
        self.ui.pushButton_Enviar.clicked.connect(self.enviarMail)

    def obtieneEmailDestino(self):
        email = self.ui.lineEdit_Destino.text()
        if len(email.split()) != 0 and email.find("@gmail.com") != -1:
            print email.find("@gmail.com")
            return email
        else:
            print email.find("@gmail.com")
            self.errorMessage(u"Ingrese email destino valido")
            return "false"

    def obtieneAsunto(self):
        asunto = self.ui.lineEdit_Asunto.text()
        if len(asunto.split()) != 0:
            return asunto
        else:
            self.errorMessage(u"Ingrese asunto valido")
            return "false"

    def enviarMail(self):
        """
        Envia el informe al email especificado en la lidea de texto
        """
        nom_informe = self.nom_informe
        destinatario = self.obtieneEmailDestino()
        asunto = self.obtieneAsunto()
        if destinatario == "false" or asunto == "false":
            pass
        else:
            self.correctMessage(
                u"Se envio el informe al \ncorreo electrónico: \n"
                + destinatario
                + "\n\n Esto puede tardar unos segundos"
            )
            user = "******"
            password = "******"
            # para las cabeceras del email
            remitente = "*****@*****.**"
            mensaje = self.ui.textEdit_Comentario.toPlainText() + "\n"
            mensaje = mensaje + "<br>" + "<br>" + "Mensaje Generado Automaticamente <br>"
            mensaje = mensaje + "No responder al correo electronico de origen"
            archivo = os.getcwd() + "/INFORMES/" + nom_informe
            # Host y puerto SMTP de Gmail
            gmail = smtplib.SMTP("smtp.gmail.com", 587)

            # protocolo de cifrado de datos utilizado por gmail
            gmail.starttls()
            # credenciales
            gmail.login(user, password)
            # muestra la depuracion de la operacion de envío (1 = true)
            gmail.set_debuglevel(1)

            header = MIMEMultipart()
            header["Subject"] = asunto
            header["From"] = remitente
            header["To"] = destinatario

            mensaje = MIMEText(mensaje, "html")
            header.attach(mensaje)
            if os.path.isfile(archivo):
                adjunto = MIMEBase("application", "octet-stream")
                adjunto.set_payload(open(archivo, "rb").read())
                encode_base64(adjunto)
                adjunto.add_header("Content-Disposition", 'attachment; filename="%s"' % os.path.basename(archivo))
                header.attach(adjunto)
                # Enviar email
                try:
                    gmail.sendmail(remitente, destinatario, header.as_string())
                    # cerrar conexion SMTP
                    gmail.quit()
                    self.close()
                except:
                    self.errorMessage(u"Correo Electronico Destino Invalido")
            else:
                self.errorMessage(u"No existe dato adjunto, genere el informe nuevamente")
                self.close()

    def correctMessage(self, message):
        """Función que despliega un mensaje de operacion correcta.
        @param message"""
        QtGui.QMessageBox.information(self, u"Operacion correcta", message)

    def errorMessage(self, message):
        """Función que despliega un mensaje de error.
        @param message"""
        QtGui.QMessageBox.warning(self, u"ERROR!", message)

    def salir(self):
        self.close()