+ send_msg_list(msgs)\r
+\r
+\r
+def send_template_email(recipients, template, context):\r
+ t = loader.get_template(template)\r
+ context.update(dict(recipients=recipients, settings=settings))\r
+ t.render(Context(context))\r
+\r
+def create_and_send_mail_messages(messages):\r
+ sender = '%s <%s>' % (unicode(settings.APP_SHORT_NAME), unicode(settings.DEFAULT_FROM_EMAIL))\r
+\r
+ connection = SMTP(str(settings.EMAIL_HOST), str(settings.EMAIL_PORT),\r
+ local_hostname=DNS_NAME.get_fqdn())\r
+\r
+ try:\r
+ if (bool(settings.EMAIL_USE_TLS)):\r
+ connection.ehlo()\r
+ connection.starttls()\r
+ connection.ehlo()\r
+\r
+ if settings.EMAIL_HOST_USER and settings.EMAIL_HOST_PASSWORD:\r
+ connection.login(str(settings.EMAIL_HOST_USER), str(settings.EMAIL_HOST_PASSWORD))\r
+\r
+ if sender is None:\r
+ sender = str(settings.DEFAULT_FROM_EMAIL)\r
+\r
+ for recipient, subject, html, text, media in messages:\r
+ msgRoot = MIMEMultipart('related')\r
+ msgRoot['Subject'] = subject\r
+ msgRoot['From'] = sender\r
+ msgRoot['To'] = '%s <%s>' % (recipient.username, recipient.email)\r
+ msgRoot.preamble = 'This is a multi-part message from %s.' % unicode(settings.APP_SHORT_NAME).encode('utf8')\r
+\r
+ msgAlternative = MIMEMultipart('alternative')\r
+ msgRoot.attach(msgAlternative)\r
+\r
+ msgAlternative.attach(MIMEText(text, _charset='utf-8'))\r
+ msgAlternative.attach(MIMEText(html, 'html', _charset='utf-8'))\r
+\r
+ for alias, location in media.items():\r
+ fp = open(location, 'rb')\r
+ msgImage = MIMEImage(fp.read())\r
+ fp.close()\r
+ msgImage.add_header('Content-ID', '<'+alias+'>')\r
+ msgRoot.attach(msgImage)\r
+\r
+ try:\r
+ connection.sendmail(sender, [recipient.email], msgRoot.as_string())\r
+ except Exception, e:\r
+ pass\r
+\r
+ try:\r
+ connection.quit()\r
+ except socket.sslerror:\r
+ connection.close()\r
+ except Exception, e:\r
+ print e\r