Действие администратора Django с промежуточной страницей обрабатывает только первые 100 вариантов выбора

#django #django-admin

Вопрос:

У меня есть действие администратора, в котором я выбираю исполнителей, а затем выбираю электронное письмо, которое я хочу им отправить. Если я отфильтрую художников, а затем выберу выбрать всех, я получу около 1000 художников. Если я отправил электронное письмо, его отправят только первым 100.

Это мое действие:

 def send_email(self, request, queryset):
    form = None

    if 'apply' in request.POST:
        form = ChooseEmailForm(request.POST)

        if form.is_valid():
            email = form.cleaned_data['email']

            htmlMessage = email.htmlMessage
            for artist in queryset:
                send_single_email(email, artist)
            
            self.message_user(request, _('Successfully emailed '%s' to the selected artists.') % (email))
            return HttpResponseRedirect(request.get_full_path())

    if not form:
        form = ChooseEmailForm(initial={'_selected_action': request.POST.getlist(ACTION_CHECKBOX_NAME)})

    return render(request, 'admin/send_email.html', {'artists': queryset, 'email_form': form})
 

Это моя форма:

 class ChooseEmailForm(forms.Form):
    _selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
    email = forms.ModelChoiceField(queryset=Email.objects.all(), label='')
 

и это мой html:

 {% extends "admin/base_site.html" %}

{% block content %}

<p>Select the email to send:</p>

<form action="" method="post">
    {% csrf_token %}

    {{ email_form }}

    <p>De chosen email will be send to the following artists:</p>

    <ul>{{ artists|unordered_list }}</ul>

    <input type="hidden" name="action" value="send_email" />
    <input type="submit" name="apply" value="Send email" />
</form>

{% endblock %}
 

В промежуточной форме написано: «Выбранное электронное письмо будет отправлено следующим исполнителям:» и перечислены все 1000 исполнителей. Но когда я подаю заявление, оно отправляется только первым 100.

Есть какие-нибудь идеи?

Ответ №1:

Я думаю, что это связано с почтовым менеджером, который вы используете в проекте.

Я предполагаю, что это Gmail !

В соответствии с ограничениями на отправку Gmail в Google Workspace, количество получателей на сообщение, отправленное через SMTP (пользователями POP или IMAP) или API Gmail, ограничено 100 ( Адреса в полях Кому, Cc и Bcc одного электронного письма. Включает электронную почту, отправленную с помощью smtp-relay.gmail.com или smtp.gmail.com ).

Я думаю, что в этом и заключается проблема ( если, конечно, Gmail ).