La mia applicazione Django ha 10.000 utenti, tutti con e-mail. Vorrei inviare un messaggio e-mail a tutti loro dire una volta al mese. Questo messaggio potrebbe avere alcuni allegati pdf.Come si invia un'email a 10.000 utenti in Django?
Quello che ho provato è usare un oggetto EmailMessage per inviare un'email a tutti loro. Prima di inviare, aggiungo tutti gli indirizzi e-mail degli utenti al componente bcc di questo EmailMessage.
recList = []
for recipient in rec:
reci = str.strip(str(recipient))
recList.append(reci)
message = (form.cleaned_data['subject'], form.cleaned_data['message'], '[email protected]', recList)
mail = EmailMessage(form.cleaned_data['subject'], form.cleaned_data['message'], '[email protected]', ['[email protected]'], recList)
num_attachments = 0
if form.cleaned_data['attachment'] != None:
email_attachment = EmailAttachment(
document_name = form.cleaned_data['attachment'].name,
email_message = email,
document = form.cleaned_data['attachment'],
)
email_attachment.save()
mail.attach_file(settings.MEDIA_ROOT + "/" + email_attachment.document.name)
mail.send(fail_silently=False)
Tuttavia, quando mando l'e-mail, Django si lamenta che "il collegamento è stato ripristinato" e non invia. Suppongo che la connessione al server sia stata chiusa.
Qual è un modo efficace per inviare un'esplosione di massa in Django? send_mass_mail()
sarebbe più efficace?
Nota: si è dimenticato di controllare il flag recipient.hasSignedUpForEmail. Inoltre, meno umoristicamente, perché crei un "messaggio" e perché è all'interno del ciclo, venendo sovrascritto ogni volta? – Spacedman
hai provato tramite http://code.google.com/p/django-mailer/ – Ahsan