You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本PyCharm运行正常,终端执行input()触发SyntaxError

解决Python脚本在终端使用SMTP_SSL发送邮件时的SyntaxError问题

这个问题其实是Python版本差异导致的,很常见:你在PyCharm里用的是Python3,但终端默认执行的是Python2,两者的input()函数行为完全不一样。

问题根源

  • Python3的input():直接读取用户输入的内容作为字符串,不需要加引号,这就是为什么PyCharm里运行正常。
  • Python2的input():会把用户输入的内容当作Python代码去解析。你输入mahmoud.wizzo@gmail.com时,它会把这个当成一个带点的变量名(不符合Python标识符规则),所以抛出SyntaxError;而加引号后,它被解析成合法的字符串字面量,就能正常运行了。

解决方案

这里给你两种可行的解决办法:

1. 用Python3执行脚本(推荐)

很多系统里python命令默认指向Python2,你只需要在终端里用python3来运行脚本:

python3 medo.py

这样就能和PyCharm里的环境保持一致,不需要修改代码,直接输入邮箱地址就行。

2. 修改代码适配Python2

如果必须用Python2运行,把代码里的input()全部换成raw_input()——Python2的raw_input()和Python3的input()行为一致,直接读取字符串,不需要引号。另外你原来代码里的str(mml)这类转换是多余的,因为raw_input()返回的已经是字符串,可以删掉:

import smtplib
s = smtplib.SMTP_SSL("smtp.googlemail.com:465")
mml = raw_input("enter your email address :\n")
passr = raw_input("enter your pass:\n")
s.login(mml, passr)
em = raw_input("please type the email you want to send :\n")
a = raw_input("please type the message:\n")
s.sendmail(mml, em, a)
print("\nEmail Was Sent..:)")

额外提示

另外要注意,Gmail的SMTP服务现在需要你开启应用专用密码(如果开启了两步验证),或者暂时开启“不太安全的应用访问”(不推荐长期开启),否则会出现登录失败的问题,这点可以提前检查一下。

内容的提问来源于stack exchange,提问作者Mody963Cz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:10:21