morphex wrote: > That works, kinda. I get strange characters now like this > > """ > Date: Mon, 7 Nov 2005 11:38:29 -0700 (MST) > Message-Id: <[EMAIL PROTECTED]> > To: [EMAIL PROTECTED], [EMAIL PROTECTED] > From: [EMAIL PROTECTED] > Subject: Order confirmation > Content-Type: text/plain; charset="utf-8" > X-Bogosity: No, tests=bogofilter, spamicity=0.000000, version=0.92.8 > > Thank you for your order, it is copied here for your convenience, and > we will process it shortly. > > Name: ø > Phone: ø > Email: [EMAIL PROTECTED] > Comments: asdf > """ > > but at least it doesn't raise any errors. >
This is a method I have clipped from one of my projects. It should pretty much cover everything you would want to do while sending mails. def Workgroup_mailFormAction(self, to=None, cc=None, bcc=None, inReplyTo=None, subject=None, body='', attachments=None, mfrom=None, REQUEST=None): """ Sends a message. Many of the input parameters are not currently used, but can be used for skinning the functionlity. """ site_encoding = self._site_encoding() ################## # Create the message msg = Message() msg.set_payload(body, site_encoding) ##################################### # if attachment, convert to multipart # file fields are posted even if empty, so we need to remove those :-s if attachments is None: attachments = [] attachments = [a for a in attachments if a] if attachments: mimeMsg = MIMEMultipart() mimeMsg.attach(msg) for attachment in attachments: # Add the attachment tmp = email.message_from_string(str(attachment.headers)) filename = tmp.get_param('filename', 'Attachment', 'Content-Disposition') # clean up IE paths filename = filename[max(filename.rfind('/'), filename.rfind('\\'), filename.rfind(':') )+1:] contentType = tmp['Content-Type'] attach_part = Message() attach_part.add_header('Content-Type', contentType, name=filename) attach_part.add_header('Content-Disposition', 'attachment', filename=filename) attach_part.set_payload(attachment.read()) Encoders.encode_base64(attach_part) mimeMsg.attach(attach_part) msg = mimeMsg ######################## # set headers on message #### if to is None: to = [] if mfrom: to.append(mfrom) msg['From'] = mfrom msg['Reply-To'] = mfrom to = ','.join(to) if to: msg['To'] = to #### if cc is None: cc = [] cc = ','.join(cc) if cc: msg['Cc'] = cc #### if bcc is None: bcc = [] bcc = ','.join(bcc) if bcc: msg['Bcc'] = bcc #### msg['Date'] = self.ZopeTime().rfc822() # needed by some servers if inReplyTo: msg['In-Reply-To'] = inReplyTo msg['Subject'] = Header(subject, site_encoding) ################## # Send the message SMTPserver = self._mailhost() success = 0 try: cleaner = lambda adresses: [adress.strip() for adress in adresses.split(',') if adress.strip()] all_receivers = cleaner(to) + cleaner(cc) + cleaner(bcc) all_receivers = list(set(all_receivers)) if all_receivers: # only send if any recipients self._mailhost().send(str(msg), mto=all_receivers, mfrom=mfrom) success = 1 except: pass -- hilsen/regards Max M, Denmark http://www.mxm.dk/ IT's Mad Science -- http://mail.python.org/mailman/listinfo/python-list