我试图下载一些电子邮件的主题,但我收到以下错误消息:
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是否有问题。
答案 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。