libcurl和imap

时间:2012-04-22 11:20:51

标签: imap libcurl

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

2 个答案:

答案 0 :(得分: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 - 选择 用户的收件箱并仅使用邮件的文本部分提取邮件

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

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

  • 可以发出其他命令,例如:LIST列出a的子文件夹 邮箱;检查以查看邮箱中存在的电子邮件;创建,重命名和 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” - Marks 消息1在用户的收件箱中显示为

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

- url imap:// mail.example.com/INBOX -X“'FETCH 1 BODY [TEXT]”将执行 与

相同的操作

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

答案 1 :(得分:4)

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

curl -v 'imaps://creaktive+gmail.com:dxdnbndeokykvkkd@imap.gmail.com:993/Inbox'

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