我注意到libcurl支持IMAP,但在文档中没有找到任何内容,示例http://curl.haxx.se/libcurl/c/imap.html非常差。有谁知道如何在这个lib中使用这个协议,如何下载邮件? 此致
答案 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
- 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'
我不太确定是否有一种简单的方法可以执行其他任务,例如列出邮箱或选择最新邮件。