libcurl和imap

jan*_*zmk 10 imap libcurl

我注意到libcurl支持IMAP,但在文档中没有找到任何内容,例子http://curl.haxx.se/libcurl/c/imap.html非常差.有谁知道如何在这个lib中使用这个协议,如何下载邮件?问候

rab*_*exc 12

邮件列表上有一封很好的电子邮件,描述了IMAP语法:http: //curl.haxx.se/mail/lib-2013-03/0104.html

这是相关部分:

--url imap://mail.example.com/INBOX/; UID = 1 - 选择用户的收件箱并提取消息1

--url imap://mail.example.com/INBOX; UIDVALIDITY = 50 /; UID = 2 - 选择用户的收件箱,检查邮箱的UIDVALIDITY为50,如果是,则检索邮件2

--url imap://mail.example.com/INBOX/; UID = 3 /; SECTION = TEXT - 选择用户的收件箱并仅使用邮件的文本部分提取邮件3

除了检索电子邮件之外,还可以将电子邮件传输到服务器.这是通过IMAP APPEND命令实现的,只需利用curl现有的机制将数据上传到服务器:

--url imap://mail.example.com/OUTBOX -T email.txt

  • 可以发出其他命令,例如:LIST列出邮箱的子文件夹; 检查以查看邮箱中存在的电子邮件; CREATE,RENAME和DELETE操作子文件夹,STORE更改电子邮件和其他人的属性.一些例子如下:

--url imap://mail.example.com - 执行顶级文件夹列表

--url imap://mail.example.com/INBOX - 在用户的收件箱中执行文件夹列表

--url imap://mail.example.com -X"EXAMINE INBOX" - 在用户的收件箱中执行邮件列表

--url imap:// mail.example.com/INBOX -X"CREATE子文件夹" - 在用户的收件箱中创建子文件夹

--url imap:// mail.example.com/INBOX -X"RENAME子文件夹我的文件夹" - 将用户收件箱中的子文件夹重命名为my-folder

--url imap:// mail.example.com/INBOX -X"DELETE子文件夹" - 删除用户收件箱中的子文件夹

--url imap:// mail.example.com/INBOX -X"STORE 1 + Flags\Deleted" - 从用户的收件箱中删除邮件1

--url imap:// mail.example.com/INBOX -X"STORE 1 + Flags\Seen" - 将用户收件箱中的邮件1标记为已读

除了使用URL语法来获取消息之外,还可以使用自定义请求机制来执行自定义FETCH操作.例如

--url imap:// mail.example.com/INBOX -X"'FETCH 1 BODY [TEXT]"将执行相同的操作

--url imap:// mail.example.com/INBOX/;UID=1/;SECTION=TEXT


cre*_*ive 4

以下命令选择我的 Gmail 收件箱并发出问题FETCH 1 BODY[TEXT]以获取第一封(最旧的)邮件:

curl -v 'imaps://creaktive+gmail.com:dxdnbndeokykvkkd@imap.gmail.com:993/Inbox'
Run Code Online (Sandbox Code Playgroud)

我不太确定是否有一种简单的方法来执行其他任务,例如列出邮箱或选择最新消息。