Quickstart ========================= Send a simple email is really easy: .. code-block:: python from sendmail import mail mail.send( 'recipient@example.com', # List of email addresses or list of EmailAddress also accepted 'from@example.com', subject='My email', message='Hi there!', html_message='Hi there!', ) If you want to use templates: - In your templates folder create an .html file with your email markup. Inside it you can leave placeholders or use context vars. For example something like this: .. code-block:: django {% load sendmail %} Example email template Hello, {{ username }} {% placeholder 'main' %} - Register your template in ``settings.py``: .. code-block:: python SENDMAIL = { ... 'EMAIL_TEMPLATES': [ ('your-file/path', _('Your-Name')), ] } You can use relative path from your ``templates`` folder or absolute file path. - Specify list of translation languages in ``settings.LANGUAGES`` or disable internalization by setting ``settings.USE_I18N`` to ``False``. - Open your admin interface and create a new EmailMergeModel instance: - Enter name. This will be used as identifier for your template and click "Save and continue editing". - Select Base File which you have created. - You will be requested to enter values to the placeholders you entered in the template. (``main`` in the example). You can specify variables to be filled with the context. Syntax is `#var#`. Example: This is a simple mail created by #generator# - If you have more than 1 language configured you will be able to fill values for all languages in ``LANGUAGES``. - Create element in Email Template Content inline with desired language - Click `Save and Continue Editing` - Fill in placeholders - Save your instance. - You can now send test email with created object using ``Send test email button``. In test email you can make use of ``demo context`` that can be refreshed using ``Reparse Context`` button. - To send an email with the created template: .. code-block:: python from sendmail import mail mail.send( 'recipient@example.com', # List of email addresses or list of EmailAddress also accepted 'from@example.com', emailmerge='your-template-here', # Could be an EmailMergeModel instance or name context={'generator': 'sendmail', 'username': 'michaelpoi',}, # Context is used to fill both {{ var }} in html and #var# in ckeditor. language='en' # If not specified settings.LANGUAGE_CODE is used ) The above command will put your email on the queue so you can use the command in your webapp without slowing down the request/response cycle too much. To actually send them out, run: ``python manage.py sendmail all`` You can schedule this management command to run regularly via cron: .. code-block:: * * * * * (/usr/bin/python manage.py sendmail all >> send_mail.log 2>&1)