我使用以下代码将邮件从gmail帐户发送到另一个Gmail帐户:
import smtplib
class GmailSmpt:
global server
server = smtplib.SMTP('smtp.gmail.com','587')
def __init__(self,sendfrom,sendto,usrname,pswd):
self.sendfrom = sendfrom
self.sendto = sendto
self.usrname = usrname
self.pswd = pswd
def connect(self):
msg = 'this is a test message'
server.starttls()
server.login(self.usrname,self.pswd)
server.sendmail(self.sendfrom,self.sendto,msg)
print ("your email has been sent")
def quit(self):
server.quit()
first = GmailSmpt('sendfrom','sendto',
'usrname','pswd')
first.connect()
first.quit()
我没有使用全局变量服务器,而是想在“connect”函数中使用“return server”,然后将服务器传递给“quit”函数。我怎么把它放入def退出的参数(self,?)?我通常在非面向对象程序中做的是“def quit(self,connect),但在这种情况下,我希望能够分别调用def connect()和def quit()。
谢谢!
答案 0 :(得分:2)
如何使server
成为GmailSmpt
的每个实例的属性:
class GmailSmpt:
def __init__(self,sendfrom,sendto,usrname,pswd):
self.server = smtplib.SMTP('smtp.gmail.com','587')
...
毕竟,server.login
使用self.usrname
和self.pswd
,因此server
的相关域绑定到GmailSmpt
的一个实例,所以它将server
作为该实例的属性也是有意义的。
PS。如果您将server
属性设为self
,那么您还必须更改server
- >其他方法中self.server
。