django-multi-mail-backend 1.0.1
Django Multi Mail Backend
License: MIT
Requires Python: >=3.3

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'
        ```
    
    1. 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',
            }
        }
        ```

1. Multi SMTP Server:

    1. In your `settings.py`:
        ```
        EMAIL_BACKEND = 'django_multi_mail_backend.backend.MultiSMTPBackend'
        ```
    
    1. 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
            }
        }
        ```

1. Multi SES Server:

    1. In your `settings.py`:
        ```
        EMAIL_BACKEND = 'django_multi_mail_backend.backend.MultiSESBackend'
        ```
    
    1. 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)
    ```

1. 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()
    ```

1. 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(...)])
    ```