使用 curl 通过 imap 删除消息

Deleting a message over imap using curl

我正在做一个项目,我需要在 imap 服务器上的收件箱中读取消息,处理它,然后从收件箱中删除电子邮件。

我可以顺利收到邮件,没有任何问题,我遇到的问题是删除。

我可以使用以下方法获取电子邮件:

curl --url "imaps://imap.gmail.com:993/inbox;UID=1" --user "user:password"

这对于接收电子邮件非常有效,我成功地处理了它,所以现在当我尝试删除它时,我使用以下方法:

curl --url "imaps://imap.gmail.com:993/inbox;UID=1" --user "user:password" -X 'UID STORE 1 +Flags \Deleted'

但我随后收到以下回复:

curl: (21) Quote command returned error
curl: (6) Could not resolve host: STORE
curl: (6) Could not resolve host: 1
curl: (6) Could not resolve host: +Flags
curl: (6) Could not resolve host: \Deleted'

我想知道你是否应该使用双引号而不是单引号?

curl --url "imaps://imap.gmail.com:993/inbox;UID=1" --user "user:password" -X 'UID STORE 1 +Flags \Deleted'

应该是:

curl --url "imaps://imap.gmail.com:993/inbox;UID=1" --user "user:password" -X "UID STORE 1 +Flags \Deleted"

看起来 "STORE" 等被 curl 解释为它试图将其视为 URL 的单独参数。

我终于找到了答案,gmail 似乎与其他所有示例都略有不同,但找到了一个有效的示例:

以下作品:

curl --url "imaps://imap.gmail.com:993/Inbox;UID=1" --user "user:password" -X "STORE 1 +Flags \Deleted"

其次是

curl --url "imaps://imap.gmail.com:993/Inbox;UID=1" --user "user:password" -X "EXPUNGE"