【问题标题】:TCL & IMAP - Fetch raw .eml fileTCL & IMAP - 获取原始 .eml 文件
【发布时间】:2014-01-21 22:24:36
【问题描述】:

我正在学习 TCL,并正在尝试创建一个 TCL 项目,该项目使用 IMAP 获取未归档的消息,然后将它们添加到我的数据库中。我有连接、登录、获取和读取数据的基础知识,但现在我对如何获取文件并保存它感到困惑。

是否可以直接保存文件,或者我需要在单独获取标题、正文、附件等后以某种方式自己创建文件?

附言

我在这个主题上找到的任何东西都是 PHP / C# 或 TCL 以外的任何东西!它们都有内置函数来获取数据然后保存。我找到了 TCL 的 imap4 库,但它似乎没有与 PHP 相同的功能。

【问题讨论】:

  • 嗨,基思。恐怕我不完全理解你的问题。你指的这个“文件”是什么?为什么提到数据库?
  • 对不起,我的意思是电子邮件,获取整个电子邮件和所有信息,然后将其保存在本地。提到数据库只是为了解释我为什么要问这个问题,以及我想要做什么。

标签: imap tcl fetch


【解决方案1】:

用途:

FETCH <message ID> BODY.PEEK[]

获取完整的消息(正文+标题)。

【讨论】:

    【解决方案2】:

    根据我在互联网上看到的,“.eml”是旧软件所称的“mbox 格式”,也就是说,它只是一个纯文本文件,其中包含一封电子邮件,因为它正在使用 SMTP 通过网络传输.

    从我在section about the "FETCH" command in the IMAP RFC 中看到的情况来看,FETCH FULL 命令应该是获取给定消息的全部内容。

    由于在 Tcl 中向文件写入内容是轻而易举的事,我就试试这条路线:

    1. 使用FETCH FULL 获取完整消息;
    2. 以写入/追加模式打开一个名称以“.eml”结尾的文件,将生成的通道配置为具有“二进制”语义(通过调用chan config $fd -translation binary);
    3. 在此处写入获取的内容,关闭文件。

    然后通过尝试将生成的文件导入 Outlook 或 Thunderbird 或其他什么来验证它是如何工作的。

    【讨论】:

    • 非常感谢您的出色回答,我在使用 chan 命令时遇到了问题,但也许我只需要更新我的 TCL 版本,然后我会试一试!
    • @KeithBurke,chan 命令出现在 8.5 中。如果您有旧版本,请改用fconfigure $fd -translation binary(我当然也适用于 8.5+)。
    • 抱歉,回复太晚了,但这实际上并没有奏效,当我这样做时,我得到:* 1 FETCH (FLAGS (\Seen NonJunk) INTERNALDATE "26-Oct-2011 16:33: 20 +0200" RFC822.SIZE 1732 信封 ("2011 年 10 月 26 日星期三 16:33:19 +0200" "=?ISO-8859-1?Q?grpicm_35436_ge=E4ndert_von_wr?=" ((NIL NIL "system" "grp .de")) ((NIL NIL "system" "grp.de")) ((NIL NIL "system" "grp.de")) ((NIL NIL "kb" "grp.de")(NIL NIL " keu" "grp.de")) ((NIL NIL "wr" "grp.de")) NIL NIL "") 正文 ("text" "plain " ("charset" "ISO-8859-1") NIL NIL "8BIT" 150 5)) C OK Fetch 完成。
    • @KeithBurke,我刚刚从我的 MUA(我正在使用 Sylpheed)执行“查看原始消息”操作,同时使用 Wireshark 查看 IMAP 流量。就 IMAP 而言,获取完整消息如下所示:pastebin.com/9HhABCYc 所以我认为将 MUA 的命令(第一行)转换为该 Tcl 包的术语是一个练习。
    • FULL 等价于(FLAGS INTERNALDATE RFC822.SIZE ENVELOPE BODY),而BODY 是“BODYSTRUCTURE 的不可扩展形式”,这不是您期望的原始消息。你应该使用BODY.PEEK[]
    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2012-08-03
    • 2013-12-22
    • 1970-01-01
    • 2015-12-17
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多