Python - 通过gmail服务器发送电子邮件

时间:2016-03-02 01:58:59

标签: python smtplib

当我在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()

3 个答案:

答案 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,这意味着它试图导入错误的文件。