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

时间:2015-09-16 17:45:21

标签: go imap

我迷失在哪里可以看到参考文献来完成这个任务;我已经尝试了几次代码迭代,每次都失败了。略有编辑,但足以获得要点...

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

这似乎默默地失败了。这对我看起来应该选择“Movethese”文件夹中的所有内容并将它们复制到“目的地”。在正确复制它们时我错过了什么?是否有一种简单的方法可以移动与某个主题行字符串匹配的单个邮件?

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

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

1 个答案:

答案 0 :(得分:1)

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

处理错误通常是一个好主意,特别是在这种情况下,当你知道 某处出现错误时。

BTW,复制/删除序列有点老式。目前,大多数IMAP服务器支持UID MOVE作为原子命令,IIRC gmail是支持者之一。但是现在不能检查,所以不要相信我。