LINUX.ORG.RU

История изменений

Исправление Rinaldus, (текущая версия) :

Кажется, получилось. Вот как я переписал класс Mail():

class Mail():
    def __init__(self):
        socket.setdefaulttimeout(5)
        self.user = settings.value("Login")
        self.password = settings.value("Password")
        self.mailserver = settings.value("MailServer")
        self.port = settings.value("Port")
        
    def login(self):
        try:
            self.imap = imaplib.IMAP4_SSL(self.mailserver, self.port)
            self.imap.login(self.user, self.password)
            return True
        except:
            print("Login error")
            return False
        
    def checkMail(self):
        self.imap.select()
        self.unRead = self.imap.search(None, 'UnSeen')
        return len(self.unRead[1][0].split())
Функция mail_check()
def mail_check():
    if SettingsExist():
        m = Mail()
        if m.login():
            if m.checkMail()== 0:
                window.mailboxEmpty()
            else:
                window.mailboxFull()
        else:
            window.mailboxError()
testConnection() я убрал вообще, т.к его функцию выполняет метод login(). И теперь с заведомо неправильными настройками он очень долго висит при запуске, потом пишет (пока - в консоль, потом облагорожу) «Login error» и в конце концов все же запускается с ошибкой «Unable to check mail». Так что спасибо вам всем большое! Это как раз то, что я хотел.

Исходная версия Rinaldus, :

Кажется, получилось. Вот как я переписал класс Mail():

class Mail():
    def __init__(self):
        socket.setdefaulttimeout(5)
        self.user = settings.value("Login")
        self.password = settings.value("Password")
        self.mailserver = settings.value("MailServer")
        self.port = settings.value("Port")
        
    def login(self):
        try:
            self.imap = imaplib.IMAP4_SSL(self.mailserver, self.port)
            self.imap.login(self.user, self.password)
            return True
        except:
            print("Login error")
            return False
        
    def checkMail(self):
        self.imap.select()
        self.unRead = self.imap.search(None, 'UnSeen')
        return len(self.unRead[1][0].split())
Функция mail_check()
def mail_check():
    if SettingsExist():
        m = Mail()
        m.login()
        if m.login():
            if m.checkMail()== 0:
                window.mailboxEmpty()
            else:
                window.mailboxFull()
        else:
            window.mailboxError()
testConnection() я убрал вообще, т.к его функцию выполняет метод login(). И теперь с заведомо неправильными настройками он очень долго висит при запуске, потом пишет (пока - в консоль, потом облагорожу) «Login error» и в конце концов все же запускается с ошибкой «Unable to check mail». Так что спасибо вам всем большое! Это как раз то, что я хотел.