diff --git a/offlineimap/repository/IMAP.py b/offlineimap/repository/IMAP.py index b732243..e90d30c 100644 --- a/offlineimap/repository/IMAP.py +++ b/offlineimap/repository/IMAP.py @@ -206,12 +206,23 @@ class IMAPRepository(BaseRepository): Returns: Returns the remoteusereval or remoteuser or netrc user value. """ - localeval = self.localeval - if self.config.has_option(self.getsection(), 'remoteusereval'): user = self.getconf('remoteusereval') if user is not None: - return localeval.eval(user).encode('UTF-8') + l_user = self.localeval.eval(user) + + # We need a str username + if isinstance(l_user, bytes): + return l_user.decode(encoding='utf-8') + elif isinstance(l_user, str): + return l_user + + # If is not bytes or str, we have a problem + raise OfflineImapError("Could not get a right username format for" + " repository %s. Type found: %s. " + "Please, open a bug." % + (self.name, type(l_user)), + OfflineImapError.ERROR.FOLDER) if self.config.has_option(self.getsection(), 'remoteuser'): # Assume the configuration file to be UTF-8 encoded so we must not