【问题标题】:Python unable to add message into Thunderbird MboxPython 无法将消息添加到 Thunderbird Mbox
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 2022-10-24
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2011-04-15
    • 1970-01-01
    相关资源
    最近更新 更多