Here is the code: cc = [] for to_name, to_email_addr in to_email_addrs: cc.append(to_email_addr)
result = *send_email_message_web2py*( reply_to=reply_to, reply_to_email_addr=reply_to_email_addr, sender_organization=sender_organization, sender_name=sender_name, sender_email_addr=sender_email_addr, sender_phone_work=sender_phone_work, to_name=to_name, to_email_addr=to_email_addr, template=template, subject=subject, message_body=message_body, attachments=attachments, cc=cc, bcc=bcc, ) def *send_email_message_web2py* ( reply_to, reply_to_email_addr, sender_organization, sender_name, sender_email_addr, sender_phone_work, to_name, to_email_addr, template, subject, message_body, attachments=None, cc=None, bcc=None, ): from gluon import current request = current.request response = current.response mail=current.app.mail if not isinstance(cc, (list, tuple)):\ to_email_addr=to_email_addr.replace(' ','') reply_to_email_addr=reply_to_email_addr.replace(' ','') result = False sender = ('%s <%s>' % (sender_name, sender_email_addr)) reply_to_email_addr1 = ('%s <%s>' % (reply_to, reply_to_email_addr)) to_email_addr = ('%s <%s>' % (to_name, to_email_addr)) ################## #render the email template ################## filename_email_template_txt = template + '.txt' filename_email_template_txt=os.path.join(request.folder,filename_email_template_txt) if os.access(filename_email_template_txt,os.R_OK): body=open(filename_email_template_txt,'r').read() else: body=('Internal error:%s' % (message_body)) filename_email_template_html = template + '.html' filename_email_template_html=os.path.join(request.folder,filename_email_template_html) if os.access(filename_email_template_html,os.R_OK): body=open(filename_email_template_html,'r').read() else: body=('<html><body><h1>Internal error</h1>%s</html>' % (message_body)) ################## #import name in body context=dict( sender_organization = sender_organization, sender_name = sender_name, sender_email_addr = sender_email_addr, sender_phone_work = sender_phone_work, to_name_in_body = to_name_in_body, to_name = to_name, message_body=message_body ) try: message_txt = response.render(filename_email_template_txt,context) except Exception, e: pass context=dict( sender_organization = sender_organization, sender_name = sender_name, sender_email_addr = sender_email_addr, sender_phone_work = sender_phone_work, to_name_in_body = to_name_in_body, to_name = to_name, message_body=message_body ) #message_body=message_body.replace('<br>','\n') #logging.info('%s: context_html:%s' % (sub, str(context))) try: message_html = response.render(filename_email_template_html,context) except Exception, e: pass ################## message_html = message_html.replace('<br>', '<br>') message_body = (message_txt, message_html) ######################## to = to_email_addr reply_to = reply_to_email_addr msg = ('%s, to:%s, subject=%s, message_html:%s' % (sub, to, subject, str(message_html))) logging.info('%s:%s' % (sub, msg)) ''' cc: list or tuple of carbon copy receiver addresses; will also accept single object bcc: list or tuple of blind carbon copy receiver addresses; will also accept single object reply_to: address to which reply should be composed def send( self, to, subject='None', message='None', attachments=None, cc=None, bcc=None, reply_to=None, encoding='utf-8', headers={} ): ''' result = *mail.send*(to=to, bcc=bcc, * cc=cc, * subject=subject, message=message_body, reply_to = reply_to ) msg = ('mail.send:%s' % (to)) logging.info('%s:%s' % (sub, msg)) return result