def send_email(recipients=None, subject=None, html='', text='', sender=None): if isinstance(recipients, basestring): recipients = [recipients] cleaned_recipients = [] for recipient in recipients: if recipients == ALL_USERS: for user in api.user.get_users(): email = user.getProperty('email') if email: cleaned_recipients.append(email) elif recipients == ALL_SUBSCRIBERS: from castle.cms import subscribe cleaned_recipients.extend(subscribe.get_email_addresses()) else: cleaned_recipients.append(recipient) if sender is None: sender = get_email_from_address() if not text and html: try: text = html2text(html) except Exception: pass for recipient in cleaned_recipients: msg = MIMEMultipart('alternative') msg['Subject'] = subject msg['From'] = sender msg['To'] = recipient if text: part = MIMEText(text, 'plain') msg.attach(part) if html: part = MIMEText(html, 'html') msg.attach(part) mailhost = api.portal.get_tool('MailHost') mailhost.send(msg.as_string())
def test_get_email_address(self): data = subscribe.register('*****@*****.**', {'foo': 'bar'}) subscribe.confirm('*****@*****.**', data['code']) self.assertEquals(len(subscribe.get_email_addresses()), 1)