AX_PYTHON_MODULE([phonenumbers], [fatal])
AX_PYTHON_MODULE([psycopg], [fatal])
AX_PYTHON_MODULE([pycares], [fatal])
+AX_PYTHON_MODULE([pynliner], [fatal])
AX_PYTHON_MODULE([redis.asyncio], [fatal])
AX_PYTHON_MODULE([tornado], [fatal])
AX_PYTHON_MODULE([zxcvbn], [fatal])
import logging
import mimetypes
import os.path
+import pynliner
import random
import smtplib
import socket
except KeyError:
message.add_header(header, value)
+ # Inline any CSS
+ if extension == "html":
+ message_part = self._inline_css(message_part)
+
# Create a MIMEText object out of it
message_part = email.mime.text.MIMEText(
message_part.get_payload(), mimetype)
if self.backend.debug:
self.template_loader.reset()
+ def _inline_css(self, part):
+ """
+ Inlines any CSS into style attributes
+ """
+ # Fetch the payload
+ payload = part.get_payload()
+
+ # Setup Pynliner
+ p = pynliner.Pynliner().from_string(payload)
+
+ # Run the inlining
+ payload = p.run()
+
+ # Set the payload again
+ part.set_payload(payload)
+
+ return part
+
def embed_image(self, path):
static_dir = self.backend.config.get("global", "static_dir")
assert static_dir