在我以 bash 运行的 python 电子邮件脚本中,尝试运行它后,它会给我这个"'email' is not a package"错误。有什么想法吗?



我发现这封电子邮件发送 python 脚本要在 bash 中使用,但我在任何地方都找不到与此相关的帮助,所以这是脚本:

FROM = "example"
TO = ["example"] # must be a list
SUBJECT = "Subject"
TEXT = "Your Text"
# Prepare actual message
message = """From: %srnTo: %srnSubject: %srn
%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)
# Send the mail
import email
import smtplib
server = smtplib.SMTP(smtp.example.com)
server.sendmail(FROM, TO, message)
server.quit()

我的目标是让这个脚本在 bash 中运行并将电子邮件发送给收件人。 用准确的电子邮件替换"示例"后运行它时遇到的错误是:

ImportError: No module named 'email.utils'; 'email' is not a package

编辑: 以下是输出的内容:

""" % (FROM, ", TO, SUBJECT, TEXT)
^
SyntaxError: EOL while scanning string literal
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
from apport.report import Report
File "/usr/lib/python3/dist-packages/apport/report.py", line 21, in <module>
from urllib.request import urlopen
File "/usr/lib/python3.5/urllib/request.py", line 86, in <module>
import email
File "/home/user/email.py", line 15, in <module>
import smtplib
File "/usr/lib/python3.5/smtplib.py", line 47, in <module>
import email.utils
ImportError: No module named 'email.utils'; 'email' is not a package
Original exception was:
File "mailtest.py", line 21
""" % (FROM, ", TO, SUBJECT, TEXT)
^
SyntaxError: EOL while scanning string literal

这是一个脚本,如果您将其放在与当前程序相同的目录中,则应复制问题。

test.py

import email
print("email module path:", email.__file__)
import smtplib

我试图通过在同一目录中创建一个名为email.py的脚本来复制您的环境。当我运行test.py时,我收到您的错误

~/tmp$ touch email.py
~/tmp$ python test.py
email module path: /home/td/tmp/email.py
Traceback (most recent call last):
File "test.py", line 3, in <module>
import smtplib
File "/home/td/anaconda3/lib/python3.7/smtplib.py", line 47, in <module>
import email.utils
ModuleNotFoundError: No module named 'email.utils'; 'email' is not a package
~/tmp$ 

请注意,电子邮件模块路径不是 python 的电子邮件包。

最新更新