Email attachment problem

Alan Harris-Reid aharrisreid at googlemail.com
Thu Apr 29 19:35:49 EDT 2010


Chris Rebert wrote:
> On Thu, Apr 29, 2010 at 1:06 PM, Alan Harris-Reid
> <aharrisreid at googlemail.com> wrote:
>   
>> Hi there,
>>
>> I want to send an email with an attachment using the following code (running
>> under Python 3.1, greatly simplified to show example)
>>
>>   from email.mime.multipart import MIMEMultipart
>>   from email.mime.text import MIMEText
>>
>>   msg = MIMEMultipart()
>>   msg['From'] = from_addr
>>   msg['To'] = to_addr
>>   msg['Subject'] = subject
>>   msg.attach(MIMEText(body))
>>
>>   fp = open(att_file)
>>   att_msg = MIMEText(fp.read())
>>   attachment = att_msg.add_header('Content-Disposition', 'attachment',
>> filename=att_file)
>>   msg.attach(attachment)
>>
>>   # set string to be sent as 3rd parameter to smptlib.SMTP.sendmail()
>>   send_string = msg.as_string()
>>
>>
>> The attachment object msg1 returns 'email.mime.text.MIMEText' object at
>> <address>', but when the att_msg.add_header(...) line runs the result is
>> None, hence the program falls-over in msg.as_string() because no part of the
>> attachment can have a None value.  (Traceback shows "'NoneType' object has
>> no attribute 'get_content_maintype'" in line 118 of _dispatch in
>> generator.py, many levels down from msg.as_string())
>>
>> Has anyone any idea what the cause of the problem might be?  Any help would
>> be appreciated.
>>     
>
> .add_header() modifies the MIMEText object *in-place*; per Python
> conventions, mutator methods return None; hence, attachment = None.
>
> Try instead (untested):
> att_msg.add_header('Content-Disposition', 'attachment', filename=att_file)
> msg.attach(att_msg)
>
> Cheers,
> Chris
> --
> http://blog.rebertia.com
Hi Chris,

You are right - that does the trick.

Many thanks,
Alan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100430/6ac0a98e/attachment.html>


More information about the Python-list mailing list