草庐IT

戈朗 IMAP : moving messages to another folder

coder 2023-07-01 原文

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

// 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”。我在正确复制它们时缺少什么?是否有一种简单的方法来移动与特定主题行字符串匹配的个别邮件?

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

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

最佳答案

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

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

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

关于戈朗 IMAP : moving messages to another folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32615313/

有关戈朗 IMAP : moving messages to another folder的更多相关文章

  1. ruby - 如何使用 ruby​​ `net/imap` 归档消息 - 2

    使用以下ruby​​代码,我可以通过IMAP阅读收件箱中用户的邮件:require'net/imap'imap=Net::IMAP.new('imap.gmail.com',993,true)imap.login('user','passwd')imap.select('INBOX')mailIds=imap.search(['ALL'])mailIds.eachdo|id|msg=imap.fetch(id,'RFC822')[0].attr['RFC822']putsmsgendimap.logout()imap.disconnect()我想知道如何存档和标记已读电子邮件。我想将电

  2. ruby-on-rails - 通过 IMAP 在 Rails 中获取电子邮件 - 2

    我有一个在本地Intranet上运行的Rails应用程序,有1000个常规用户。我希望将它与我们的电子邮件服务器(MSExchange)集成。基本上-1)对于每个用户,应用程序应从邮件服务器获取其收件箱中的所有新邮件,对其进行解析,并将其归档到数据库中。我可以用ruby​​/net-imap实现它,但我担心性能。正如我所提到的,有一千个用户,每个用户都有不同的电子邮件地址。每x分钟轮询一次电子邮件服务器对于一千个用户来说会大大降低性能。看起来像IMAPIDLEwithruby/net-imap可能是一个选项,只要有新邮件(iPhone/Outlook样式),邮件服务器就会向我的应用程序

  3. ruby-on-rails - 在 ruby​​ 中支持 IMAP IDLE - 2

    好吧,几个小时以来我一直很厌烦它。我以为ruby​​1.9的net/imap.rb支持空闲命令,但现在还没有。谁能帮我实现它?来自here,我认为这可行:classNet::IMAPdefidlecmd="IDLE"synchronizedotag=generate_tagput_string(tag+""+cmd)put_string(CRLF)endenddefdonecmd="DONE"synchronizedoput_string(cmd)put_string(CRLF)endendend但是imap.idle只返回nil。 最佳答案

  4. ruby - GMail 线程、IMAP 和 Ruby - 2

    我正在使用RubyIMAP库来获取GMail对话。GMail线程对话的方式是通过“Message-ID”和“In-Reply-To”邮件header。例如:In-Reply-To:Message-ID:我不知道如何有效地获取回复消息。当前方式:target=imap.search(["NOT","DELETED"]).eachdo|msg_id|uid=imap.fetch(message_id,"ENVELOPE")[0].attr["ENVELOPE"].message_idifuid==targetm=imap.fetch(msg_id,"RFC822")[0].attr["RF

  5. ruby - 如何使用 ruby​​ 的 net/imap 库读取电子邮件的正文? - 2

    可能是我今天脑子坏了,突然想不出怎么用ruby的net/imap库来阅读邮件了。我已经花了好几个小时了。我在谷歌中输入了“rubyimapreadbody”的几种变体,并浏览了许多网站。它们都有关于如何提取附件、同步电子邮件服务器、使用gmail等的示例……有些(如chilkat)实际上是为您执行此操作的共享软件库。我查看了net/imap文档,虽然有几个示例可以完成除阅读正文之外的所有操作。我以前使用过net/imap,但我只需要将收件箱中的附件下载到目录中。我在#ruby和#rubyonrails中询问都无济于事——没人能弄明白。imap=Net::IMAP.new('mail.x

  6. ruby - 在 Ruby Net::IMAP 中选择邮箱 "sent mail"或 "all mail" - 2

    我试图在Ruby中使用Net::IMAP来搜索我发送的所有邮件,但我无法选择收件箱以外的任何内容。imap.select('INBOX')工作正常,但是imap.select('Mail/sent-mail')如Net::IMAP文档所示,显示“未知邮箱”。顺便说一句,这是与gmail一起使用的。我还尝试将“in”、“anywhere”添加到我的imap.search()中,但没有解析。当前代码:imap.select('INBOX')now=Time.now.localtime-1209600#twoweekssince=now.day.to_s()+"-"+Date::MONTHN

  7. javascript - 如何使用node-imap读取和保存附件 - 2

    我正在使用node-imap我找不到一个简单的代码示例来说明如何从使用node-imap获取的电子邮件中保存附件使用fs到磁盘。我已经阅读了几次文档。在我看来,我应该引用邮件的特定部分作为附件进行另一次提取。我从基本示例开始:varImap=require('imap'),inspect=require('util').inspect;varimap=newImap({user:'mygmailname@gmail.com',password:'mygmailpassword',host:'imap.gmail.com',port:993,tls:true});functionopen

  8. 戈朗 "Log in to the site and download the xls file"? - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion告诉我如何使用Golang登录网站。下载xls文件是得到了,但是为了在Excel表格中有数据,需要登录网站。该站点位于公司的服务器上。如果你能告诉你怎么做。例如,我用来执行此操作的VBA代码。SetoFields=CreateObject("Scripting.Dictionary")WithoFields.Add"login","sdiscor".Add"password","sdiscor"EndWi

  9. arrays - 戈朗 : Could not understand how below code is executing - 2

    下面是我查询的代码:我有一个单维数组a当我打印a[0][0]时,我不明白为什么它返回字符a的ascii值:packagemainimport("fmt")funcmain(){a:=[3]string{"a","b","c"}fmt.Println(a[0][0])}输出:97 最佳答案 下面是如何打印ascii的代码示例a:=[3]string{"a","b","c"}for_,rune:=rangea{fmt.Println(rune)//Itwillprinta,b,c}因为你在你的代码中使用了[0][0],所以它是等价的fo

  10. 戈朗 :which way is more efficient about using "for range" - 2

    typepath[]bytefunc(ppath)ToUpper(){fori,b:=rangep{if'a'在上面(这个例子是从“TheGoBlog”复制过来的),如果ToUpper变成这样:func(ppath)ToUpper(){fori,_:=rangep{if'a'哪个会更有效率为什么?“TheGoBlog”对前一个说:“这里的ToUpper方法在forrange构造中使用两个变量来捕获索引和slice元素。这种形式的循环避免了在主体中多次写入p[i]。”什么意思? 最佳答案 前者有更多的内存操作,即在b上:它在循环的第一

随机推荐