当我在IDLE中键入以下代码时,它可以正常工作:
>>> import smtplib
>>> smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
>>> smtpObj.ehlo()
>>> smtpObj.starttls()
>>> smtpObj.login("email", "password")
>>> smtpObj.sendmail("email", "email2", "Subject: Test \nsent with python!")
>>> smtpObj.quit()
但是当我尝试用它制作一个程序以便于发送电子邮件时,它会给我一个语法错误(错误时两边都有*):
import smtplib
smtpObj = smtplib.SMTP('smtp.gmail.com', 587)
smtpObj.ehlo()
smtpObj.starttls()
email = input("What is your email?: ")
password = input("What is your password?: ")
**smtpObj**.login(email, password)
print ("From: " + email)
to = input("To: ")
subject = input("Subject: ")
message = input("Message: \n")
smtpObj.sendmail(email, to, subject + message)
print ("Email sent successfuly!!!")
smtpObj.quit()
答案 0 :(得分:0)
如果您使用的是Python 2,请使用raw_input
代替input
。
根据官方文件:
输入([提示])
相当于eval(raw_input(prompt))。
此功能不会捕获用户错误。如果输入语法无效,则会引发SyntaxError。如果在评估过程中出现错误,可能会引发其他异常。
在Python 3中只有input
无论如何,您不要在输入'password'
答案 1 :(得分:0)
您在SyntaxError
之前的行上错过了一个右括号。它应该是:
password = input("What is your password?: ")
我很自在地说,Python中SyntaxError
的最常见罪魁祸首是缺少括号。许多初学者有点困惑的是,在这种情况下,SyntaxError
在实际错误之后出现在线上。请记住这一点,并始终确保您的括号匹配。
答案 2 :(得分:0)
我得到的一个错误是告诉我导入email.utils。当我尝试它它没有工作。然后我发现我的文件名是email.py,这意味着它试图导入错误的文件。