Ich benutze Signale, um E-Mails an die Benutzer abhängig von einigen Aktionen zu senden. In einem meiner Signale muss ich die gleiche Mail an mehrere Benutzer senden, verwenden mein Signal post_save
so für den Parameter [recipient_list]
Ich benutze diese instance.email_list
email_list ist, wo ich die Liste der E-Mail-Adressen speichern, um die Mail zu senden, werden sie in diesem Format gespeichert [email protected], [email protected], [email protected]
.recipient_list E-Mail nur an die erste Adresse in der Liste senden
Zum Senden der E-Mails, die ich verwende EMAIL_HOST = 'smtp.gmail.com'
das Problem ist, dass der einzige Benutzer, der die E-Mail erhalten, der erste in der Liste ist. Also logge ich mich im Google Mail-Konto ein, um den Abschnitt zum Senden von E-Mails zu überprüfen, und zeigt im E-Mail-Bereich an, dass die E-Mails an alle Nutzer in der Liste gesendet wurden Die Liste.
Ich lese, wenn Google erkennt, dass das Konto eine Menge Nachrichten sendet blockiert werden könnte, aber nur wie 5 E-Mails zur gleichen Zeit senden und wenn ich im Konto bin, zeigt mir nie eine Warnung oder etwas.
Also das Problem ist, wie ich die E-Mails senden oder vielleicht eine schlechte Konfiguration des Google Mail-Kontos?
Jede Hilfe wird wirklich geschätzt.
Entschuldigung für meine schlechte Grammatik.
EDIT: Hier ist mein Code.
forms.py
class MyForm(forms.Form):
userslist = forms.ModelChoiceField(queryset = User.objects.filter(here goes my condition to show the users), empty_label='List of users', label='Users', required=False)
emailaddress = forms.CharField(max_length=1000, label='Send to:', required=False)
comment = forms.CharField(widget=CKEditorUploadingWidget(), label="Comment:")
, die eine Liste von Benutzern angezeigt bilden die E-Mail-Adresse in das Feld, um die gewünschten Werte Emailadresse zu speichern. Das ist meine Ajax die E-Mail-Adresse zu bringen:
views.py
class mails(TemplateView):
def get(self, request, *args, **kwargs):
id_user = request.GET['id']
us = User.objects.filter(id = id_user)
data = serializers.serialize('json', us, fields=('email'))
return HttpResponse(data, content_type='application/json')
Und hier ist die <script>
ich das emailaddres Feld zu füllen verwenden:
<script>
$('#id_userlist').on('change', concatenate);
function concatenate() {
var id = $(this).val();
$.ajax({
data: { 'id': id },
url: '/the_url_to_get_data/',
type: 'get',
success: function (data) {
var mail = ""
for (var i = 0; i < data.length; i++) {
mail += data[i].fields.email;
}
var orig = $('#id_emailaddress').val();
$('#id_emailaddress').val(orig + mail + ',');
}
})
}
</script>
Das Signal Ich benutze die Post dies zu senden:
@receiver(post_save, sender=ModelOfMyForm, dispatch_uid='mails_signal')
def mails_signal(sender, instance, **kwargs):
if kwargs.get('created', False):
if instance.emailaddress:
#Here goes the code for the subject, plane_message,
#from_email and template_message.
send_mail(subject, plane_message, from_email, [instance.emailaddress], fail_silently=False, html_message=template_message)
Also, wenn ich 4 Benutzer wählen die Informationen in der Datenbank auf diese Weise sparen:
Dann logge ich mich im Konto ein, um den Abschnitt "Gesendete E-Mails" zu prüfen und die Details der E-Mails zu überprüfen, die an die vier Benutzer gesendet wurden, aber der einzige Benutzer, der die E-Mail empfangen hat, war der erste In der Liste.
Können Sie den eigentlichen Code schreiben Sie verwenden? Es gibt keine Möglichkeit herauszufinden, wo das Problem ohne dieses Problem ist. – solarissmoke
@solarissmoke Ich füge den Code und zwei Bilder hinzu. –