コード例 #1
0
    def create_message(
        self,
        message: EmailMessage,
        fail_silently: bool = False,
        fake_delivery: bool = False,
    ) -> List['SESMailDelivery']:
        assert isinstance(message, EmailMessage)
        assert message.connection is None or isinstance(
            message.connection, SESBackend)

        if settings.DEBUG and getattr(settings,
                                      'SES_SNS_TRACKER_DEBUG_BACKEND', None):
            debug_backend = import_string(
                settings.SES_SNS_TRACKER_DEBUG_BACKEND)
            message.connection = debug_backend()
        elif message.connection is None:
            message.connection = SESBackend()

        if not fake_delivery:
            message.send(fail_silently=fail_silently)

        deliveries = list()
        for recipient in message.recipients():
            deliveries.append(
                self.model(
                    recipient=recipient,
                    message_id=message.extra_headers.get(
                        'message_id', 'NO_MESSAGE_ID'),
                    request_id=message.extra_headers.get(
                        'request_id', 'NO_RESULT_ID'),
                    state=self.model.STATE_DELIVERED
                    if fake_delivery else self.model.STATE_SENT,
                ))
        return self.bulk_create(deliveries)