猿问

Golang 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”文件夹中的所有内容并将它们复制到“Destination”。我在正确复制它们时缺少什么?是否有一种简单的方法可以移动与特定主题行字符串匹配的单个消息?


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


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


Helenr
浏览 180回答 1
1回答

ITMISS

尝试在命名邮箱的两个命令中添加错误检查;反斜杠是源代码中的一个特殊字符,所以我希望 gmail 会给你一个错误,比如No such mailbox: [Gmail]Movethese.处理错误通常是一个好主意,尤其是在这样的情况下,当你知道有是一个错误的地方。顺便说一句,复制/删除序列有点老式。现在大多数 IMAP 服务器都支持UID MOVE作为原子命令,而 IIRC gmail 是支持者之一。不过,现在无法检查,所以不要相信我。
随时随地看视频慕课网APP

相关分类

Go
我要回答