无法使用 Django Q 在 Django 中发送电子邮件

Can't send email in Django Using Django Q

我正在学习 Django Q 并想看看它是如何工作的,我正在尝试发送电子邮件。但是当我检查我的 gmail 时,没有收到电子邮件(我也检查了垃圾邮件)。它也没有显示错误。 以下是代码:

Settings.py

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
EMAIL_HOST_USER = '***@gmail.com'
EMAIL_HOST_PASSWORD = '***'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

Q_CLUSTER = {
'name': 'appName',
'retry': 5,
'workers': 4,
'orm': 'default',
'workers': 8,
'recycle': 500,
'timeout': 60,
'compress': True,
'save_limit': 250,
'queue_limit': 500,
'cpu_affinity': 1,
'label': 'Django Q',
'redis': {
    'host': '127.0.0.1',
    'port': 6379,
    'db': 0, }

}

View.py 以下是我在用户成功登录时调用的函数

def welcome_mail(user):
    msg = 'Welcome to our website'
    # send this message right away
    async_task('django.core.mail.send_mail',
            'Welcome',
            msg,
            'mail@gmail.com',
            [user.email],
            fail_silently=False,
            )
    print("Email Sent--------")        
    # and this follow up email in one hour
    msg = 'Here are some tips to get you started...'
    schedule('django.core.mail.send_mail',
             'Follow up',
             msg,
             'mail@gmail.com',
             [user.email],
             schedule_type=Schedule.ONCE,
             next_run=timezone.now() + timedelta(hours=1))

您的后端是 EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend',因此它只在 控制台 上打印电子邮件。这通常用于测试目的,这样就不会向(示例)用户发送电子邮件,但您可以在控制台中看到电子邮件的外观。

您可以使用 SMTP backend [Django-doc] 和:

EMAIL_BACKEND = 'django.core.mail.backends.<strong>smtp</strong>.EmailBackend'

要使用基于 Google 的帐户从 Django 发送电子邮件,您必须 Allow 安全性较低的应用程序 在 Google 管理员这里 - https://admin.google.com/ac/security/lsa

祝你好运