Golang IMAP:将邮件移动到其他文件夹

Golang IMAP:将邮件移动到其他文件夹,go,imap,Go,Imap,我不知道在哪里可以找到参考资料来完成这项工作;我尝试了几次代码迭代,每次都失败了。略作编辑,但足以获得要点 // Make connection imConnection, err := imap.DialTLS(strAddress, nil) // Defer disconnect defer func(){ imConnection.Logout(30*time.Second) } // Authenticate imConnection.Login(strUname, str

我不知道在哪里可以找到参考资料来完成这项工作;我尝试了几次代码迭代,每次都失败了。略作编辑,但足以获得要点

// Make connection
imConnection, err := imap.DialTLS(strAddress, nil)

// Defer disconnect
defer func(){
    imConnection.Logout(30*time.Second)
}

// Authenticate
imConnection.Login(strUname, strPass)

//Select the folder with messages I want to move
imConnection.Select(`[Gmail]\Movethese`, false)

// Create a set
set, _ = imap.NewSeqSet("1:*")

// It's my understanding that moving messages means copying them over, then
// deleting the original messages?
cmd, _ := imConnection.UIDCopy(set, `[Gmail]\Destination`)
这似乎悄悄地失败了。在我看来,它应该选择“movethis”文件夹中的所有内容,并将它们复制到“Destination”中。在正确地复制它们时,我缺少了什么?是否有一种简单的方法来移动与特定主题行字符串匹配的单个消息

此外,我不确定在选择时是否必须将R/W的源目录设置为False,但这似乎没有什么区别


这是导入

尝试将错误检查添加到命名邮箱的两个命令中;反斜杠是源代码中的一个特殊字符,所以我希望gmail会给你一个错误,比如
没有这样的邮箱:[gmail]movethis

处理错误通常是一个好主意,尤其是在这种情况下,当您知道某个地方有错误时


顺便说一句,复制/删除顺序有点过时。现在大多数IMAP服务器都支持原子命令,IIRC gmail就是其中的支持者。但是,现在无法检查,所以不要相信我。

此代码段中有5个调用返回错误值。您是否在实际代码中检查它们?如果是这样的话,他们是否都返回零?@amt-一些背景…是的,我(大部分)捕捉到了问题中的错误。我开始在我的问题中输入实际的源代码进行分析,当时我意识到,与Select相比,我在复制调用中的斜杠(反斜杠与正斜杠)不匹配!我得了斜视盲!它看起来不像是在呼叫中触发了错误或奇怪的响应…因此我将研究如何更好地从服务器上取笑该响应。但它解决了方程中我的复制部分!非常感谢。回复:UID移动与复制/删除…我在imap包中没有看到直接移动功能?要么必须有直接输入raw命令的方法,要么必须使用copy/delete方法,我认为……或者copy/delete方法更向后兼容/更安全?