Skip to main content

Django Multi Mail Backend

Project description

Django Multi Mail Backend

If you use or like the project, click Star and Watch to generate metrics and i evaluate project continuity.

Install:

pip install django-multi-mail-backend

Configuration

  1. Usage with multi backend

    1. In your settings.py:

      EMAIL_BACKEND = 'django_multi_mail_backend.backend.MultiServerBackend'
      
    2. set settings servers backend, in settings.py, ex:

      EMAIL_BACKENDS = {
          'smtp': {
              'BACKEND': 'django_multi_mail_backend.backend.MultiSMTPBackend',
              # settings for MultiSMTPBackend
          },
          'smtp2': {
              'BACKEND': 'django_multi_mail_backend.backend.MultiSMTPBackend',
              # settings for MultiSMTPBackend
          },
          'ses': {
              'BACKEND': 'django_multi_mail_backend.backend.MultiSESBackend',
              # settings for MultiSESBackend
          },
          'original_smtp': {
              'BACKEND': 'django.core.mail.backends.smtp.EmailBackend',
              # this use original django smtp class and configurations
          },
          'console': {
              'BACKEND': 'django.core.mail.backends.console.EmailBackend',
          }
      }
      
  2. Multi SMTP Server:

    1. In your settings.py:

      EMAIL_BACKEND = 'django_multi_mail_backend.backend.MultiSMTPBackend'
      
    2. set settings for MultiSMTPBackend in settings.py:

      # MultiSMTPBackend use django `django.core.mail.backends.smtp.EmailBackend` in the background
      EMAIL_BACKENDS = {
          'default': {
              # see all configuration here: https://docs.djangoproject.com/en/4.1/topics/email/#smtp-backend
              'HOST': 'mailhog',
              'PORT': 1025,
              'HOST_USER': None,
              'HOST_PASS': None,
              'USE_TLS': None,
              'USE_SSL': None,
              'TIMEOUT': None,
              'SSL_KEYFILE': None,
              'SSL_CERTFILE': None,
              'DEFAULT_FROM_EMAIL': "test@teste.com",
          },
          'example1': {
              # copy above settings
          }
      }
      
  3. Multi SES Server:

    1. In your settings.py:

      EMAIL_BACKEND = 'django_multi_mail_backend.backend.MultiSESBackend'
      
    2. set settings for MultiSESBackend in settings.py:

      # MultiSESBackend use django `django_ses.SESBackend` in the background
      # see all configuration here: https://github.com/django-ses/django-ses
      # removed `AWS_` in front of the keys
      EMAIL_BACKENDS = {
          'default': {
              'ACCESS_KEY': 'mailhog',
              'SECRET_KEY': 1025,
              'SESSION_TOKEN': None,
              'SES_REGION_NAME': None,
              'SES_REGION_ENDPOINT_URL': None,
              'SES_AUTO_THROTTLE': None,
              'SES_CONFIG': None,
              'DKIM_DOMAIN': None,
              'DKIM_PRIVATE_KEY': None,
              'DKIM_SELECTOR': None,
              'DKIM_HEADERS': None,
              'SES_SOURCE_ARN': None,
              'SES_FROM_ARN': None,
              'SES_RETURN_PATH_ARN': None,
          },
          'example1': {
              # copy above settings
          }
      }
      

Usage

Don't use default django methods direct, because this method not accept custom parameters, instead use the options below

  1. With send_mail

        from django_multi_mail_backend import send_mail, send_mass_mail
        ...
    
        send_mail(..., use_use_backend='smtp')
        send_mass_mail(..., use_backend='ses')
    

    or

        from django.core.mail import send_mail, send_mass_mail, get_connection
        ...
    
        with get_connection(use_backend='console') as connection:
            send_mail(..., connection=connection)
            send_mass_mail(..., connection=connection)
    
  2. With EmailMessage

    from django_multi_mail_backend import EmailMessage, EmailMultiAlternatives
    ...
    
    EmailMessage(..., use_backend='smtp2').send()
    EmailMultiAlternatives(..., use_backend='original_smtp').send()
    

    or

    from django.core.mail import EmailMessage, EmailMultiAlternatives, get_connection
    ...
    
    with get_connection(use_backend='smtp') as connection:
        EmailMessage(..., connection=connection).send()
        EmailMultiAlternatives(..., connection=connection).send()
    
  3. With send_messages

    from django_multi_mail_backend import EmailMessage, EmailMultiAlternatives, get_connection
    ...
    
    with get_connection(use_backend='smtp') as connection:
        connection.send_messages([EmailMessage(...), EmailMultiAlternatives(...)])
    

    or

    from django.core.mail import EmailMessage, EmailMultiAlternatives, get_connection
    ...
    
    with get_connection(use_backend='smtp') as connection:
        connection.send_messages([EmailMessage(...), EmailMultiAlternatives(...)])
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-multi-mail-backend-1.0.1.tar.gz (7.2 kB view hashes)

Uploaded Source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page