Yeah, you really have to see a few examples to get the hang of
creating MIME emails, this is one area where I think the Python docs,
quite frankly, stink. I had enough trouble getting attachments from a
MIME email, let alone adding one.

(But, if I recall correctly, a MIME email has a distinct structure, to
the point that the email  module has a walk() function to traverse
it.)

Regards, 

Liam Clarke


On Sun, 20 Feb 2005 15:32:13 -0500, Martin Walsh <[EMAIL PROTECTED]> wrote:
> Tim Wilson wrote:
> 
> >Hi everyone,
> >
> >
> Hi Tim,
> 
> I'm a newb, first time posting, so please take any of the following
> advice at face value....
> 
> ># Collect form information
> >form = cgi.FieldStorage()
> >requestername = form["requestername"].value
> >fromaddr = form["email"].value
> >itemname = form["itemname"].value
> >description = form["description"].value
> >buildings = form.getlist("building")
> >room = form["room"].value
> >dateneeded = form["dateneeded"].value
> >po = form["po"].value
> >budgetcode = form["budgetcode"].value
> >attachment = form["attachment"].value
> >
> >
> based on this cookbook recipe
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/273844, it looks
> like cgi.FieldStorage() returns a file-like object for file input
> fields, having  .filename and .file attributes. the file attribute has a
> read() method which may be useful. having never used cgi I'm not sure
> what .value returns for file input fields, don't know if this is of any
> consequence.
> 
> >buildinglist = ", ".join(buildings)
> >
> >**[ misc code snipped ]**
> >
> ># Set some email headers
> >#msg = MIMEText(msgtext)
> >msg = MIMEMultipart()
> >msg['Subject'] = itemname
> >msg['From'] = "%s <%s>" % (requestername, fromaddr)
> >msg['To'] = toaddr
> >if len(buildings) != 0:
> >    for building in buildings:
> >        msg['X-HRT-Building'] = building
> >if po != "": msg['X-HRT-PO'] = po
> >if dateneeded != "":
> >    try:
> >        duedate = time.asctime(time.strptime(dateneeded, "%m/%d/%Y"))
> >        msg['X-HRT-Due-Date'] = duedate
> >    except ValueError:
> >        pass
> >msg.preamble = "Tech order request"
> >msg.epilogue = ""
> >
> >
> if you know that the attachment will always be a text file and your
> assignment of 'attachment' looks like this:
> 
>     attachment = form["attachment"]
> 
> then you might try the following (untested):
> 
>     part = MIMEText(attachment.file.read())
>     # if I understand correctly, the 'Content-Disposition' header is
> necessary to make the file
>     # appear in the message as an attachment, otherwise it may occupy
> the msg body.
>     part.add_header('Content-Disposition', 'attachment',
> filename=attachment.filename)
>     msg.attach(part)
> 
> ># Send the message
> >server = smtplib.SMTP('localhost')
> >server.sendmail(fromaddr, toaddr, msg.as_string(0))
> >server.quit()
> >
> >
> there's a great example in the email module docs if you're dealing with
> more than just text files :
> http://docs.python.org/lib/node578.html (3rd example, using the
> mimetypes module)
> 
> I have collected code snippets from various sources (python docs, ASPNs
> python cookbook) into a basic MIMEMailer class, that I use fairly
> regularly in hobby projects. If anyone is interested, I'd be happy to
> share, or post it here.
> 
> HTH,
> Marty
> 
> 
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
> 


-- 
'There is only one basic human right, and that is to do as you damn well please.
And with it comes the only basic human duty, to take the consequences.
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to