title: How to fetch an email body using imaplib in python?
body: <p>I'd like to fetch the whole message from IMAP4 server.
  In python docs if found this bit of code that works:</p>
  
  <pre><code>&gt;&gt;&gt; t, data = M.fetch('1', '(RFC822)')
  &gt;&gt;&gt; body = data[0][1]
  </code></pre>
  
  <p>I'm wondering if I can always trust that data[0][1] returns the body of the message. When I've run 'RFC822.SIZE' I've got just a string instead of a tuple.</p>
  
  <p>I've skimmed through rfc1730 but I wasn't able to figure out the proper response structure for the 'RFC822'. It is also hard to tell the fetch result structure from imaplib documentation.</p>
  
  <p>Here is what I'm getting when fetching <code>RFC822</code>:  </p>
  
  <pre><code>('OK', [('1 (RFC822 {858569}', 'body of the message', ')')])
  </code></pre>
  
  <p>But when I fetch <code>RFC822.SIZE</code> I'm getting:</p>
  
  <pre><code>('OK', ['1 (RFC822.SIZE 847403)'])
  </code></pre>
  
  <p>How should I properly handle the data[0] list?
  Can I trust that when it is a list of tuples the tuples has exactly 3 parts and the second part is the payload?</p>
  
  <p>Maybe you know any better library for imap4?</p>