Package: django-firstclass
# Django FirstclassFirstclass is a proxy email backend for Django that allows for global email transformationssuch as automatically creating a plain text version of html emails or automatically creatingan online version of the email that can be read in browser.## Install```bashpip install django-firstclass```- Add ``'firstclass'`` to ``INSTALLED_APPS``- Add ``url(r'^email/', include('firstclass.urls'))`` to your urlconf.- Set ``EMAIL_BACKEND`` to ``'firstclass.backends.ProxyBackend'``- Syncdb## Settings### FIRSTCLASS_EMAIL_BACKENDThe email backend to send processed emails to after they've gone through the middleware.##### Default```pythonFIRSTCLASS_EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'```### FIRSTCLASS_MIDDLEWAREFirstclass middleware works just like Django middleware. Firstclass applies middlewarein the order it's defined in ``FIRSTCLASS_MIDDLEWARE``, top-down. You can even create yourown middleware. See: [Custom Middleware](#custom-middleware)##### Default```pythonFIRSTCLASS_MIDDLEWARE = ('firstclass.middleware.online.ViewOnlineMiddleware','firstclass.middleware.alternative.MultiAlternativesMiddleware','firstclass.middleware.text.PlainTextMiddleware',)```## Available Middleware### PlainTextMiddleware``firstclass.middleware.text.PlainTextMiddleware``#### Settings##### FIRSTCLASS_PLAINTEXT_RULESA dictionary of rules for converting html to plain text. Keys should be a qualifiedselector for BeautifulSoup's ``findAll``. Values can either be a formatting string ora function that accepts one argument, ``attrs``. All attributes found on the elementcan be used for formatting or will be passed to your function in ``attrs``.##### Default```pythonFIRSTCLASS_PLAINTEXT_RULES = {'a': '(%(text)s) %(href)s','img': '%(title)s: %(src)s',}```### MultiAlternativesMiddleware``firstclass.middleware.alternative.MultiAlternativesMiddleware``Coerces email to ``EmailMultiAlternatives`` so that a multiple versions of theemail can be added.### ViewOnlineMiddleware``firstclass.middleware.online.ViewOnlineMiddleware``Saves all emails and adds a link to the email body so that they can be viewed onlinein a web browser. Ideally this middleware should come before the ``PlainTextMiddlewware``so that the link that is added is converted to plain text.``ViewOnlineMiddleware`` uses the template ``firstclass/view_online_wrap.html`` to appendthe link to the bottom of the email. You can override this by providing your own in yourtemplates directory.#### Settings##### FIRSTCLASS_VIEWONLINE_AUTHIf this is ``True`` the user will need to be logged in to view email. The user's email wouldalso need to be one of the original recipients of the email.##### Default```pythonFIRSTCLASS_VIEWONLINE_AUTH = False```## Custom MiddlewareDefining custom middleware for Firstclass is simple. Middleware should be a singlePython class that defines ``process_message``.### process_message``process_message(self, message)````message`` is an [EmailMessage](https://docs.djangoproject.com/en/dev/topics/email/?from=olddocs/#emailmessage-objects)or an ``EmailMessage`` like object. ``process_message`` should return ``message``or ``None``. If it returns ``None`` the email will be dropped.## Views### view_message_online``firstclass.views.view_message_online(request, key, template='firstclass/message.html')``This view is used by the ``ViewOnlineMiddleware`` middleware. It's template islocated at ``firstclass/message.html``. You can override this by providing your ownin your templates directory. The render context contains ``message`` which is ``Message``model instance.