当我运行我的程序core.py(http://pastebin.com/kbzbBUYd)时,它返回:
文件"core.py",第47行,在texto core.mail(numbersendlist,messagetext)中NameError:全局名称'core'未定义
谁能告诉我发生了什么以及如何阻止这个错误?
如果有帮助,core.py中的"import carrier"行指的是carrier.py(http://pastebin.com/zP2RHbnr)
您正在获取NameError因为core您的代码中没有在本地或全局范围内定义此类名称.Core在调用它的方法之前先创建一个对象.
缩进texto()也可能是错误的.您将无法从模块的其余部分使用此功能.如果要从当前模块的其他部分或其他模块中使用它,请在模块级别声明该函数,或者@staticmethod如果要使其成为类的静态方法,请使用装饰器.
这应该工作.
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
import carrier
class Core:
def __init__(self, username, password):
# code could be added here to auto load these from a file
self.gmail_user = username
self.gmail_pwd = password
# Send one text to one number
# TODO: send to multiple addresses
def mail(self, to, text):
msg = MIMEMultipart()
msg['From'] = self.gmail_user
msg['To'] = to
msg.attach(MIMEText(text))
mailServer = smtplib.SMTP("smtp.gmail.com", 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(self.gmail_user, self.gmail_pwd)
mailServer.sendmail(self.gmail_user, to, msg.as_string())
# Should be mailServer.quit(), but that crashes...
mailServer.close()
def texto(sendtoaddress, messagetext):
numbersendlist = []
for number in sendtoaddress:
numbersendlist.append(carrier.carriercheck(number))
core = Core('username', 'password')
for number in numbersendlist:
core.mail(number, messagetext)
texto(['1112223333'], 'hi. this better work.')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7448 次 |
| 最近记录: |