【问题标题】:Error when fetching subject from email using HaskellNet's IMAP使用 HaskellNet 的 IMAP 从电子邮件中获取主题时出错
【发布时间】:2014-10-07 12:35:28
【问题描述】:

我试图下载一些电子邮件的主题,但收到以下错误消息:

000004:2:1: expecting either "* " or "000004"

以下代码应该会重现问题(正确替换用户名和密码时):

main = do
        conn <- connectIMAPSSL "imap.gmail.com"
        login conn "username" "password"
        boxes <- list conn
        let box = "INBOX"
        select conn box
        uids <- search conn [UNFLAG Seen]
        forM uids $ \uid -> do
            putStrLn "Fetching"
            fetchByString conn uid "BODY[HEADER.FIELDS (SUBJECT)]"
            putStrLn "Fetched"

主要问题是我不确定这是我的代码、HaskellNet 还是 GMail 的问题。

【问题讨论】:

  • 请给我们看一下 IMAP 连接的日志。
  • 我不完全确定如何获取 IMAP 连接的日志。
  • 将您的密码更改为“guesswork”(九个字母,无引号),然后重试。

标签: haskell imap


【解决方案1】:

这确实是 HaskellNet 内部的解析器错误。我已经提交了一个拉取请求,你可以看到 here,根据我的经验,jtdaugherty 对这些事情的响应速度非常快,所以希望它很快就会进入主线 HaskellNet。

正如 Jan Kundrát 所说,IMAP 连接日志对于找出问题非常宝贵。就原始 HaskellNet 而言,“如何获取日志?”的答案是“定义您自己的 BSStream”,但是由于您使用 HaskellNet-SSL 来访问 gmail,因此已经为您定义了 BSStream。

我在 HaskellNet-SSL 中添加了一个名为“sslLogToConsole”的参数,它会将 IMAP 会话日志内联到 STDOUT,并以“HaskellNet-SSL”标记为前缀,以帮助您将它们分开。此功能在 0.2.5 版本中可用,因此如果您还有其他问题,希望这有助于调试它们!

编辑:事实上,jtdaugherty 是如此之快,以至于在我设法输入此响应之前,他已经合并了更改!

【讨论】:

    【解决方案2】:

    一些线索...我可以重现错误。

    在下一行中用 UID 替换 SUBJECT 不会产生错误。

    fetchByString conn uid "BODY[HEADER.FIELDS (SUBJECT)]"
    

    这行得通..

    fetch conn uid 
    

    看源码好像应该和这个意思一样……

    fetchByString conn uid "BODY[] "
    

    但它会产生与上述相同的错误。我怀疑问题不是gmail。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      相关资源
      最近更新 更多