首页 > 解决方案 > 如何在 Django 活动的 1 天前发送电子邮件提醒?

问题描述

我有三个模型。

  1. 自定义用户
  2. 网上注册
  3. 智联

以下是models.py中Zlink的代码,

class Zlink(models.Model):
    customUser = models.ForeignKey(CustomUser, on_delete=models.CASCADE) #foreignkey 1
    webregister = models.ForeignKey(Webregister, on_delete=models.CASCADE) #foreignkey 2
    reg_link = models.CharField(max_length=255,null=True, blank=True)
    def __str__(self):
        return str(self.pk)

“foreignkey 2”给了我事件ID,“foreignkey 1”给了我用户的电子邮件地址。

在众多字段中,其中一个字段Webregisterevent_starts包含事件开始的日期和时间。

在使用触发查询的事件中,我可以获取用户的电子邮件地址,

x = Zlink.objects.get(id=1)
x.customUser

现在如果用户有多个用户,那么这些电子邮件地址如何在一天的事件之前发送提醒电子邮件?

任何线索?我是 django 的新手。

标签: djangodjango-modelsdjango-formsdjango-viewsscheduled-tasks

解决方案


场景 1(如果自定义用户模型只有一个电子邮件字段):

x = Zlink.objects.get(id=1)
email_to_list = [x.customUser.email,]

场景 2(如果自定义用户模型有两个电子邮件字段):

x = Zlink.objects.get(id=1)
email_to_list = [x.customUser.primary_email, x.customUser.secondary_email]

最后使用以下代码发送邮件(假设您在 settings.py 中定义了有效的 smtp 设置)

from django.core.mail import send_mail

send_mail(
    'Subject here',
    'Here is the message.',
    'from@example.com',
    email_to_list,
    fail_silently=False,
)

推荐阅读