sendingbusy decr(try againenot on self def asksmtppassword(self)""get password if needed from gui herein main threadcaveatmay try this again in thread if no input first timeso goes into loop until input is providedsee pop paswd input logic for nonlooping alternative ""password 'while not passwordprompt ('password for % on % ?(self smtpuserself smtpservername)password popuputil askpasswordwindow(appnamepromptreturn password class replywindow(writewindow)""customize write display for replying text and headers set up by list window ""modelabel 'replyclass forwardwindow(writewindow)""customize reply display for forwarding text and headers set up by list window ""modelabel 'forwardmessagecachemessage cache manager the class in example - implements cache for already loaded messages its logic is split off into this file in order to avoid further complicating list window implementations the server list window creates and embeds an instance of this class to interface with the mail server and to keep track of already loaded mail headers and full text in this versionthe server list window also keeps track of mail fetches in progressto avoid attempting to load the same mail more than once in parallel this task isn' performed herebecause it may require gui operations example - pp \internet\email\pymailgui\messagecache py ""#############################################################################manage message and header loads and contextbut not guia mailfetcherwith list of already loaded headers and messagesthe caller must handle any required threading or gui interfaces changeuse full message text unicode encoding name in local mailconfig moduledecoding happens deep in mailtoolswhen message pymailgui implementation