+++ /dev/null
-##parameters= other_adr=[], batchM=[], customized_batch={}, expand='', collapse='', subject='', text_body='', wfid=None, send_fields={}, ajax=''
-recipients = {'to':[], 'cc':[], 'bcc':[]}
-if expand or collapse :
- if expand :
- expand = expand.keys()[0]
- return context.send_email_form(other_adr=other_adr, expand=expand,
- batchM=batchM, customized_batch=customized_batch,
- subject=subject, text_body=text_body,
- send_fields=send_fields)
-if batchM :
- rolesAndMembers = dict(context.getRecipients())
- for role in batchM :
- field = send_fields[role]
- recipients[field].extend( [m.id for m in rolesAndMembers[role]] )
-
-for role, b in customized_batch.items() :
- field = send_fields[role]
- recipients[field].extend( b )
-
-
-other_adr = filter(None, other_adr)
-if not (reduce(lambda a, b : a+b, recipients.values()) or other_adr) :
- context.setStatus(False, 'No email sent : no recipient specified.')
- return context.setRedirect(context, 'object/view')
-
-portal = context.portal_url.getPortalObject()
-mtool = portal.portal_membership
-MailHost = portal.MailHost
-
-from quopri import encodestring
-
-def encodeAdr(member) :
- name = member.getMemberFullName(nameBefore=0)
- email = member.getProperty('email')
- qpName = encodestring(name).replace('=\n', '')
- return '''"=?utf-8?q?%s?=" <%s>''' % (qpName, email)
-
-sender = mtool.getAuthenticatedMember()
-sender = encodeAdr(sender)
-
-
-recipientsFormated = {'to':'', 'cc':'', 'bcc':''}
-for field, b in recipients.items() :
- formated = map(encodeAdr, mtool.getMembers(b))
- formated = filter(None, formated)
- formated = ', '.join(formated)
- recipientsFormated[field] = formated
-
-if other_adr :
- recipients['to'].extend(other_adr)
- formated = ', '.join(other_adr)
- to = ', '.join([recipientsFormated['to'], formated])
- to = to.strip(', ')
- recipientsFormated['to'] = to
-
-recipientsHeader = []
-for field in ['to', 'cc', 'bcc'] :
- value = recipientsFormated[field]
- if value :
- recipientsHeader.append('%s: %s' % (field.capitalize(), value))
-
-recipientsHeader = '\n'.join(recipientsHeader)
-
-message = context.echange_mail_template( From = sender
- , recipients = recipientsHeader
- , Subject = "=?utf-8?q?%s?=" % encodestring(subject).replace('=\n', '')
- , ContentType = 'text/plain'
- , charset = 'UTF-8'
- , body=text_body)
-
-MailHost.send( message.encode('utf-8') )
-
-if wfid is not None :
- wtool = portal.portal_workflow
- email_sent = reduce(lambda a, b : a+b, recipients.values())
- wtool.doActionFor(context, 'send_email', wf_id=wfid,
- email_sent=email_sent,
- comment=text_body)
-
-context.setStatus(True, 'Email sent.')
-return context.setRedirect(context, 'object/view', ajax=ajax)
\ No newline at end of file