Email attachments

Josiah Carlson jcarlson at
Fri Oct 22 23:30:37 CEST 2004

lutherrevisited at (LutherRevisited) wrote:
> Is there a way I can put a message together without having to download any
> attachments there may be at the same time.  I'm not having any problems dealing
> with attachments, but the way I'm doing things makes me download the complete
> message first, attachements and all:
> mail = []
> for j in M.retr(i)[1]:
>     mail.append(j.rstrip())
> inMail = email.message_from_string('\r\n'.join(mail))
> I don't have a real problem per se with this, it's just that I would just as
> soon not download the attachments as well at first.  Also I'm wondering, are my
> attachments potentially dangerous at the state when I first get them as part of
> the email, or are they not potentially dangerous until I binary write that part
> of the message into a file(that's how I'm dealing with attachments, if I want
> to keep an attachment in the already downloaded complete email, I just write it
> to a file.

On POP3 mail servers, there are but two parts of the message; the header
and body.  Some servers support the TOP command, which is used like so:
TOP <message> <bodylines>

With that command, you can get the headers and <bodylines> number of
lines from the body of the email message, on servers that support it.

Now, understand that in the case of POP3, the server does not understand
what you think of as an attachment.  It is all just the body of the
email (likely encoded with base64), separated with section delimiters.

Also understand that the ordering of these "attachments" can be
arbitrary (include the binary attachment, then the plain text email,
then the html email), so you may need to download the entire email to
get the plain text message body.

 - Josiah

More information about the Python-list mailing list