0

我在 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

我不知道我做错了什么以及为什么我没有收到任何错误消息。

我将不胜感激任何帮助。

谢谢。

4

1 回答 1

0

您添加到 mbox 文件的消息没有显示在 Thunderbird 中,因为您没有更新该文件夹的索引 (.msf) 文件。

在 Thunderbird 中,右键单击文件夹名称并选择“属性”。在“常规信息”选项卡中,阅读“[修复文件夹]”按钮旁边的简介。然后点击文件夹。这将导致 Thunderbird 从头开始​​重建索引 - 包括您添加的消息。(当然假设你在这个过程中没有把它们搞砸。)

于 2022-01-21T22:36:42.710 回答