Well, there are two problems.
1) in line 98, user should be self.user which will solve the error message. in line 88 user, passw should be self.user, self.passw
2) After fixing those two lines, try printing self.user and self.passw in the login function. When I did that it said that self.user is 'Login ID' and self.passw is 'Password' even after changing the user and password. The problem lies in where you GetValue(), you have it in __init__ where it will get the starting values when it should be in the functions that use it so user input is read.
Here's the code that seems to be working, with the changes from above. I've also added style=wx.TE_PASSWORD in line 46 to mask the password.
import smtplib import time import os import wx window=wx.App() s=smtplib.SMTP("smtp.gmail.com",587) s.starttls() class pymailer(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1,"Py-mailer",size=(500,700)) self.info={} self.user="" self.passw="" self.to="" self.subject="" self.message="" self.panel=wx.Panel(self,-1) menubar=wx.MenuBar() filem=wx.Menu() filem.Append(201,"Quit") self.Bind(wx.EVT_MENU,self.Quit,id=201) viewm=wx.Menu() viewm.Append(202,"About") self.Bind(wx.EVT_MENU,self.About,id=202) menubar.Append(filem,"File") menubar.Append(viewm,"Help") self.SetMenuBar(menubar) wx.StaticText(self.panel,-1,"Welcome to Py-mailer.\nLogin with your Gmail credentials and you can send a text-only email to anyone quickly and easily.",pos=(10,10)) wx.StaticText(self.panel,-1,"Please enter your Gmail login ID: ",pos=(10,100)) wx.StaticText(self.panel,-1,"Please enter your Gmail login password:\n(will not be stored)",pos=(10,130)) self.username=wx.TextCtrl(self.panel,101,"Login ID",pos=(220,100)) self.password=wx.TextCtrl(self.panel,102,"Password",pos=(220,130), style=wx.TE_PASSWORD) login=wx.Button(self.panel,103,label="Login",pos=(10,170)) self.Bind(wx.EVT_BUTTON,self.Login,id=103) wx.StaticText(self.panel,-1,"To:",pos=(10,250)) wx.StaticText(self.panel,-1,"Subject:",pos=(10,280)) wx.StaticText(self.panel,-1,"Message:",pos=(10,310)) self.to_info=wx.TextCtrl(self.panel,104,pos=(80,250),size=(240,20)) self.sbj_info=wx.TextCtrl(self.panel,105,pos=(80,280),size=(240,20)) self.msg_info=wx.TextCtrl(self.panel,106,pos=(80,310),size=(240,150)) send=wx.Button(self.panel,107,"Send",pos=(245,470)) self.Bind(wx.EVT_BUTTON,self.Send,id=107) self.Centre() self.Show() def Quit(self,event): self.Close() def About(self,event): about=wx.AboutDialogInfo() about.SetName("Py-Mailer") about.SetCopyright("(c) 2009 Sravan") about.SetWebSite("http://www.uberpix.wordpress.com") about.AddDeveloper("Sravan") about.AddDeveloper("Dan") wx.AboutBox(about) def Login(self,event): self.user=self.username.GetValue() self.passw=self.password.GetValue() try: s.login(self.user,self.passw) wx.StaticText(self.panel,-1,"Logged in...",pos=(10,200)) except: wx.StaticText(self.panel,-1,"Failed",pos=(10,200)) def Send(self,event): self.info["To"]=self.to_info.GetValue() self.info["Subject"]=self.sbj_info.GetValue() self.info["Message"]=self.msg_info.GetValue() to=self.info["To"] subject=self.info["Subject"] message=self.info["Message"] msg="To: "+to+"\nSubject: "+subject+"\n"+message s.sendmail(self.user,to,msg) s.quit() pymailer() window.MainLoop()
Oh ofcourse! Just a few days ago, I was working on a program, where I used GetValue()
IN the function...don't know why it didn't strike to me! ;)
Anyways thanks...