在Django中发送批量邮件

8 浏览
0 Comments

在Django中发送批量邮件

我需要在Django中发送批量邮件,邮件模板将被定制化,模板中的一些数据将来自数据库。我曾使用过Django通知,但它只能向注册用户发送邮件。我需要向非注册用户发送邮件。用户可以选择五个邮件模板中的任意一个,并且需要发送邮件。

例如,向一组非注册用户发送一封活动邀请邮件。用户将输入电子邮件地址,并进行批量发送。我可以使用哪个Django包来实现相同的功能?

0
0 Comments

发送批量邮件在Django中的问题出现的原因是需要发送大量的邮件,并且希望能够使用自定义的邮件模板。解决方法是使用Django的邮件发送功能,并结合批量处理方法和自定义模板。

首先,可以使用Django的默认方法发送多封邮件。可以参考官方文档:https://docs.djangoproject.com/en/dev/topics/email/#sending-multiple-emails。具体代码如下:

from django.core import mail
connection = mail.get_connection()
connection.open()
receiver_list = ['aa.cc', 'dd.ff']  # 根据需求添加收件人列表
email1 = mail.EmailMessage('Hello', 'Body goes here', 'from.com',
                          receiver_list, connection=connection)
email1.send()
connection.close()

对于批量邮件的参考,可以参考StackOverflow上的回答:How does one send an email to 10,000 users in Django?

从这个回答中还可以得到关于使用邮件模板发送邮件的方法。如果使用Django 1.7版本,可以添加`html_message`参数到`send_mail()`函数中。具体细节参考官方文档:here。另外,对于批量邮件处理,Django也提供了`send_mass_mail()`方法,详细使用方法可以参考官方文档:send_mass_mail()

此外,如果想要使用特定的邮件模板来发送邀请邮件(包括正确的空格和缩进),也是可以实现的。在我的回答中已经提供了参考链接。

另外需要注意,在使用已经设置好的邮件提供商(例如Zoho)时,需要将连接关闭,可以使用`connection.close()`方法。具体参考官方文档:docs.djangoproject.com/en/3.0/topics/email/…

原来的链接已经失效(适用于Django 1.6版本)。新的链接在这里:docs.djangoproject.com/en/3.2/topics/email/#send-mass-mail。`send_mass_mail()`和`send_mail()`之间的主要区别在于,`send_mail()`每次执行时都会打开与邮件服务器的连接,而`send_mass_mail()`会为所有邮件使用一个连接,这使得`send_mass_mail()`稍微更高效一些。

0