【发布时间】:2020-10-01 17:49:56
【问题描述】:
我在 ubuntu 16.04 上使用 python 2.7。
我一直在使用 python 从我的电脑上由 Thunderbird 创建的 mbox 文件中读取电子邮件。我现在想将消息添加到这些 mbox 文件中。我关闭了 Thunderbird,然后尝试从命令行运行我的 python 脚本。 python 脚本根本没有给我任何错误消息,但是当我打开 Thunderbird 时,我没有看到任何新消息被添加到 mbox 文件中。
我确实查看了我是否有权限问题。我把linux中mbox文件的权限改成了:view content=anyone,change content=anyone,execute=anyone。
我在 sudo 模式下运行我的 python 脚本。
这是我尝试过的代码:
mboxfile = "/home/jan/.thunderbird/gkzlvipz.default/ImapMail/mail.jan.info/INBOX"
print("opening: "+mboxfile)
mbox = mailbox.mbox(mboxfile)
mbox.lock()
try:
print("Trying:Begins")
msg = mailbox.mboxMessage()
msg.set_unixfrom('author Sat Feb 7 01:05:34 2020')
msg['From'] = 'info@jan.info'
msg['To'] = 'ljan@gmail.com'
msg['Subject'] = 'JL Python Sample message 1'
msg.set_payload('This is the body.\nFrom (should be escaped).\nThere are 3 lines.\n')
mbox.add(msg)
mbox.flush()
print("Trying:Ends")
except Exception as e:
# Just print(e) is cleaner and more likely what you want,
# but if you insist on printing message specifically whenever possible...
Print("Exception - FAILED")
if hasattr(e, 'message'):
print("Error 1: " + e.message)
else:
print("Error 2: " + e)
finally:
print("Finally")
mbox.unlock()
sys.exit("PYTHON ENDS: TEST EMAIL SEND FINISHED")
运行上述脚本时得到的输出是:
*** PYTESTTHUNDERBIRD BEGINS ***
opening: /home/jan/.thunderbird/gkzlvipz.default/ImapMail/mail.jan.info/INBOX
Trying:Begins
Trying:Ends
Finally
PYTHON ENDS: TEST EMAIL SEND FINISHED
我不知道我做错了什么以及为什么我没有收到任何错误消息。
如果有任何帮助,我将不胜感激。
谢谢。
【问题讨论】:
-
选择有问题的代码并使用按钮
{}对其进行格式化 -
首先删除
try/except以获得完整的回溯(完整的错误消息) - 并提出问题。顺便说一句:也许当您阅读完整的回溯时,您会看到真正的问题,并且您无需我们的帮助即可解决。 -
为什么要添加它?也许 Thunderbird 将它与邮件服务器同步并删除它?如果您想发送邮件,请使用
smtplib并直接使用邮件服务器 - 无需 Thunderbird。 -
您好 Furas,非常感谢您的建议。这是我的反馈。 (1) 我确实删除了整个尝试...看看它是否崩溃,但它没有。它仍然完美地运行。但我没有在文件夹中看到消息。 (2)当你问目的时,我只是想测试一下功能,看看我能不能让它工作。如果是这样,那么我更愿意通过 Thunderbird 本身发送消息,因为这些消息量很小,如果它们通过客户端发送,那么它们不会被视为垃圾邮件等。它们在其他电子邮件系统中具有更高的“排名”。
-
另外,我想做的另一件事是删除和移动 mbox 文件夹中的邮件。这也是我想尝试添加一些东西的原因。我会写一些代码,看看我是否可以同时读取和删除mbox文件夹中的一条消息。
标签: python email thunderbird mbox write