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