User Tools

Site Tools


curl:perform_imap_queries_using_curl

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
curl:perform_imap_queries_using_curl [2016/11/16 16:43] petercurl:perform_imap_queries_using_curl [2020/09/25 13:02] (current) 192.168.1.1
Line 1: Line 1:
 ====== Curl - Perform imap queries using Curl ====== ====== Curl - Perform imap queries using Curl ======
  
-If you have an IMAP or IMAPS server you can "read your email" using Curl. To get started you'll first of all need to know:+If you have an IMAP or IMAPS server you can "read your email" using Curl.  To get started you'll first of all need to know:
  
   * Your mail-server address.   * Your mail-server address.
   * Your mail login.   * Your mail login.
   * Your mail password.   * Your mail password.
 +
 +----
  
 ===== Listing Folders ===== ===== Listing Folders =====
Line 16: Line 18:
  
 <WRAP info> <WRAP info>
-If you leave out the password from the --user argument, curl will prompt you for the password before it preforms the request. This way you're not leaking your password to your shell history or the process list.+If you leave out the password from the **<nowiki>--user</nowiki>** argument, curl will prompt you for the password before it preforms the request. This way you're not leaking your password to your shell history or the process list.
  
-Curl also supports .netrc lookup of user:password with -n, if the --user argument is left off.+Curl also supports .netrc lookup of user:password with -n, if the **<nowiki>--user</nowiki>** argument is left off.
 </WRAP> </WRAP>
  
 +returns
  
-Returns +<code bash>
- +
-<code>+
 .. ..
 .. ..
Line 35: Line 36:
 Here we see that we've connected, and received a list of folders, including "xen-users", "fairshare", and the "INBOX". Here we see that we've connected, and received a list of folders, including "xen-users", "fairshare", and the "INBOX".
  
-If your mail-server is running over SSL then instead of using **imap://** you should set the schema to **imaps://**, it may be that you're using a self-signed certificate in that case you'd add **--insecure** to avoid checking the certificate trust-chain.+If your mail-server is running over SSL then instead of using **<nowiki>imap://</nowiki>** you should set the schema to **<nowiki>imaps://</nowiki>**, it may be that you're using a self-signed certificate in that case you'd add **<nowiki>--insecure</nowiki>** to avoid checking the certificate trust-chain.
  
 This would look like so: This would look like so:
Line 43: Line 44:
 </code> </code>
  
 +----
  
 ===== Discovering Messages ===== ===== Discovering Messages =====
  
-With the previous example we looked at listing mailboxes.  What if we wanted to actually view a message?  To fetch a message we need the identifier of the message to fetch - so we need to find out how many messages exist, as message-IDs are sequential.+With the previous example we looked at listing mailboxes.  What if we wanted to actually view a message? 
 + 
 +To fetch a message we need the identifier of the message to fetch - so we need to find out how many messages exist, as message-IDs are sequential.
  
 To see how many messages exist in the folder "People-Steve" we'd run this: To see how many messages exist in the folder "People-Steve" we'd run this:
Line 57: Line 61:
 </code> </code>
  
-Returns+returns:
  
-<code>+<code bash>
 * OK [PERMANENTFLAGS ()] Read-only mailbox. * OK [PERMANENTFLAGS ()] Read-only mailbox.
 * 9465 EXISTS * 9465 EXISTS
Line 69: Line 73:
 This tells us that there are 9465 messages.  So we can probably assume that fetching a message with each of these IDs will work: 1, 2, 3, ... 9465, & 9465. This tells us that there are 9465 messages.  So we can probably assume that fetching a message with each of these IDs will work: 1, 2, 3, ... 9465, & 9465.
  
 +----
  
 ===== Fetching A Single Message ===== ===== Fetching A Single Message =====
Line 82: Line 87:
 </code> </code>
  
-Returns+returns:
  
-<code>+<code bash>
 .. ..
 X-HELO: mail.cs.helsinki.fi X-HELO: mail.cs.helsinki.fi
Line 103: Line 108:
 </code> </code>
  
-Returns+returns:
  
-<code>+<code bash>
 Date: Sat, 14 Apr 2012 14:13:41 +0300 (EEST) Date: Sat, 14 Apr 2012 14:13:41 +0300 (EEST)
 From: Steve Kemp <steve@steve.org.uk> From: Steve Kemp <steve@steve.org.uk>
Line 114: Line 119:
 We could have avoided the use of URL-encoding and instead sent a custom-request, like so: We could have avoided the use of URL-encoding and instead sent a custom-request, like so:
  
-<code>+<code bash>
 curl --insecure --verbose \ curl --insecure --verbose \
     --url "imaps://imap.example.com/People-Steve" \     --url "imaps://imap.example.com/People-Steve" \
Line 121: Line 126:
 </code> </code>
  
-Returns+returns:
  
-<code>+<code bash>
 .. ..
 Subject: Re: Fancy a cake? Subject: Re: Fancy a cake?
Line 131: Line 136:
 The reason for avoiding custom-requests where possible is that when you're using the curl API programatically you'll discover that responses are not decoded - which is a known issue. The reason for avoiding custom-requests where possible is that when you're using the curl API programatically you'll discover that responses are not decoded - which is a known issue.
  
-In the example above we'd have received zero output unless/until we added the **--verbose** flag.  Precisely because curl has received the output from the IMAP-server but not decoded it and presented it to us.+In the example above we'd have received zero output unless/until we added the **<nowiki>--verbose</nowiki>** flag.  Precisely because curl has received the output from the IMAP-server but not decoded it and presented it to us.
  
 +----
  
 ===== Simple Shell Scripts ===== ===== Simple Shell Scripts =====
Line 152: Line 158:
 This takes no account of the maximum message-ID.  You could just keep going indefinitely, to dump all subjects and stop on error: This takes no account of the maximum message-ID.  You could just keep going indefinitely, to dump all subjects and stop on error:
  
-<code>+<code bash>
 #!/bin/sh #!/bin/sh
 # Dump the subject of all messages in the folder. # Dump the subject of all messages in the folder.
Line 167: Line 173:
 </code> </code>
  
 +----
  
 ===== CurlMail Script ===== ===== CurlMail Script =====
Line 247: Line 254:
 </code> </code>
  
 +----
  
 ===== References ===== ===== References =====
  
 http://crystalfaeries.net/fae/curlmail.html http://crystalfaeries.net/fae/curlmail.html
 +
curl/perform_imap_queries_using_curl.1479314599.txt.gz · Last modified: 2020/07/15 09:30 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki