何らかのアクションによっては、ユーザーにメールを送信するための信号を使用しています。私の信号の1つでは、複数のユーザーに同じメールを送る必要があります。私の信号はpost_save
です。[recipient_list]
私はこれを使用しますinstance.email_list
email_listはメールを送信する電子メールアドレスのリストを格納しています。 [email protected], [email protected], [email protected]
。recipient_listリストの最初のアドレスにメールを送信する
私はEMAIL_HOST = 'smtp.gmail.com'
を使用して電子メールを送信するには、電子メールを受信する唯一のユーザーがリストの最初のユーザーであることが問題です。だから私はGmailのアカウントにメールを送信セクションをチェックし、実際にリストのすべてのユーザーに送信された電子メールショーの "to"領域にログインしますが、電子メールは最初のメールアドレスには届きませんリスト。
私はグーグルが多くのメッセージを送信したことを検出した場合、ブロックされている可能性がありますが、同時に5つのメールを送信するだけで、アカウントにはアラートなど何も表示されません。
問題はどうやってメールを送信するのか、またはGmailアカウントの設定を悪くすることですか?
本当にありがとうございます。
私の悪い文法には申し訳ありません。
編集:ここに私のコードです。
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:")
このフォームでは、emailaddressフィールドに電子メールアドレスを選択するユーザーの一覧が表示されます。
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')
そして、ここで私はemailaddresフィールドを埋めるために使用<script>
だ:これは、電子メールアドレスを持って来るために私のAjaxです
<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>
私がメールを送信するために使用する信号はこれです:
@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)
したがって、4人のユーザーを選択すると、情報はデータベースにこのように保存されます。
アカウントにログインして「送信済みメール」セクションをチェックし、メールの詳細を確認し、4人のユーザーに送信したが、メールを受け取った唯一のユーザーが最初でしたリスト内の
あなたが使用している実際のコードを投稿することができますか?これがないとどこに問題があるのか把握する方法はありません。 – solarissmoke
@solarissmokeコードと2つの画像を追加します。 –