我有一个类sendmail,我试图在其他类中调用它。argument
将确定要发送的电子邮件。 sendmail类中的argument
将根据从其中调用它的其他类给出的参数发送邮件。但是,在执行它时,我收到错误消息,指出argument
未定义。
这是我的代码:
#!/usr/bin/python
import smtplib
class sendmail(argument):
TO = 'yourmail@gmail.com'
if argument=='PIR':
SUBJECT = 'PIR'
TEXT = 'Motion is detected'
gmail_sender = 'mymail@gmail.com'
gmail_passwd = 'mypwd'
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo
server.login(gmail_sender, gmail_passwd)
BODY = '\r\n'.join([
'TO: %s' % TO,
'From: %s' % gmail_sender ,
'Subject: %s' % SUBJECT ,
'',
TEXT
])
try:
server.sendmail(gmail_sender, [TO], BODY)
print 'email sent'
except:
print 'error'
server.quit()
答案 0 :(得分:1)
我认为您正在寻找的是静态功能。
import smtplib
class MailUtils:
@staticmethod
def sendmail(argument):
TO = 'yourmail@gmail.com'
if argument=='PIR':
SUBJECT = 'PIR'
TEXT = 'Motion is detected'
gmail_sender = 'mymail@gmail.com'
gmail_passwd = 'mypwd'
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.ehlo
server.login(gmail_sender, gmail_passwd)
BODY = '\r\n'.join([
'TO: %s' % TO,
'From: %s' % gmail_sender ,
'Subject: %s' % SUBJECT ,
'',
TEXT
])
try:
server.sendmail(gmail_sender, [TO], BODY)
print 'email sent'
except:
print 'error'
server.quit()
你可以这样做:
import MailUtils
MailUtils.sendmail(argument)
注意:如下面的评论所述,如果类包含多个相关函数,而不仅仅是单个函数,则此方法效果最佳。