Golang IMAP:将邮件移动到另一个文件夹

Golang IMAP: moving messages to another folder

我不知道在哪里可以查看参考资料来完成此任务;我已经尝试了几次代码迭代,但每次都失败了。略有编辑,但足以了解要点...

// 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`)

这似乎默默地失败了。这对我来说看起来应该 select "Movethese" 文件夹中的所有内容并将它们复制到 "Destination." 我在正确复制它们时错过了什么?有没有一种简单的方法可以移动与特定主题行字符串匹配的个别邮件?

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

这是导入 github.com/mxk/go-imap/imap package

尝试为命名邮箱的两个命令添加错误检查;反斜杠是源代码中的一个特殊字符,所以我预计 gmail 会给你一个错误,例如 No such mailbox: [Gmail]Movethese.

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

顺便说一句,copy/delete 序列有点过时。现在大多数 IMAP 服务器都支持 UID MOVE 作为原子命令,IIRC gmail 是支持者之一。不过现在无法查看,所以请不要相信我。