如何在 Django 中发送每周预定的电子邮件

How to send weekly scheduled emails in Django

我喜欢每周五为我的用户发送预定的电子邮件。 我正在使用 Pythonanywhere,所以我不能使用 Celery,因为 PA 可以使用它。我喜欢使用 PA 的 Task 功能,它不能安排每周任务,所以它应该每天检查是否是星期五。 我开始写一个函数,但我没有那么有经验并且卡住了。如果它没有任何 html 我点击按钮触发该功能,我不知道如何编写该功能。

我在我的项目目录下创建了一个weekly_email_mm.py文件:

import datetime
from django.core.mail import send_mail
from django.shortcuts import render

today = datetime.date.today()
weekday = today.weekday()

def send_mm_email(???):
    
    subject = 'Hello'
    message = 'Hi there'
    
    if (weekday == 4):
        send_mail(
            subject,
            message,
            'something@from.com',
            ['user@xy.com'],
            fail_silently=False,
        )
        print('Friday, mails sent')
    
    else:
        print('Not Friday')    
    
    return render(???)

如果你能帮助我,提前谢谢你!

你可以使用django-q,

https://django-q.readthedocs.io/en/latest/

它易于使用,并带有 django 管理面板集成, 你必须单独 运行 qcluster 服务器并使用 crontab 字段来创建 cron job.To 在每个星期五 11:00 .use

创建一个作业
0 11 * * 5

在 django 管理面板的 crontab 字段上,或者您也可以通过代码创建,按照教程进行。