我注意到 libcurl 支持 IMAP,但在文档中没有找到任何内容,示例http://curl.haxx.se/libcurl/c/imap.html很差。有谁知道如何在这个库中使用这个协议,如何下载邮件?问候
2 回答
邮件列表中有一封很好的电子邮件,描述了此处的 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,仅包含消息的文本部分
除了检索电子邮件之外,还可以将电子邮件传输到服务器。这是通过 IMAPs 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 Sub-folder" - 在用户的收件箱中创建一个子文件夹
--url imap:// mail.example.com/INBOX -X "RENAME Sub-folder My-folder" - 将用户收件箱中的子文件夹重命名为 my-folder
--url imap:// mail.example.com/INBOX -X "DELETE Sub-folder" - 删除用户收件箱中的子文件夹
--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
以下命令选择我的 Gmail 收件箱并发出问题FETCH 1 BODY[TEXT]
以获取第一条(最旧的)邮件:
curl -v 'imaps://creaktive+gmail.com:dxdnbndeokykvkkd@imap.gmail.com:993/Inbox'
我不太确定是否有一种简单的方法可以执行其他任务,例如列出邮箱或选择最新消息。