[Zope] How to create a file and send it by e-mail ?

Chris Withers chris at simplistix.co.uk
Tue Oct 11 10:42:00 EDT 2005


(yet again, please CC zope at zope.org in replies..)

Nicolas Georgakopoulos wrote:
> I think I need it... 

I don't ;-)

> I have made a web page (ZPT) that a user answer's 
> to a questionnaire , most of the answers are provided by check boxes and 
> radio buttons.
> When the user submit the answers a mail is send with the answers by text 
> in a string format like coma separated values.

You have a python script to do this, right?

> The problem is that my client request to get the answer by mail with a 
> file as an attachment so he can analyze the data with a statistical 
> program SPSS.
> Can this be done with Zope File Object ? (I don't think it can... )

You don't need a file object. Build the thing you want to send as a 
string called data, and have a string variable called filename 
containing the name you want to use for the attachment.

Then you need create a MIMEBase object for it:

# some imports
from email.MIMEBase import MIMEBase
from email import Encoders

# now create the attachment
msg = MIMEBase(maintype, subtype)
msg.set_payload(data)
Encoders.encode_base64(msg)
msg.add_header('Content-Disposition', 'attachment',
                filename=filename)

# now render the MailTemplate
wrapper = context.my_mail_template.as_message(
     # insert params here
     )
# finally, attach the file and send
wrapper.attach(msg)
wrapper.send()

You may also be interested in something I will likely add for the 1.1.0 
release:

https://secure.simplistix.co.uk/support/issue180

cheers,

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk


More information about the Zope mailing list