使用HaskellNet的IMAP从电子邮件中获取主题时出错

时间:2014-10-03 17:19:38

标签: haskell imap

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

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是否有问题。

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

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

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

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

这有效..

fetch conn uid 

查看来源,它看起来应该与此相同......

fetchByString conn uid "BODY[] "

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