如何解决Django send_mail调度问题



我正在使用Pythonywhere(PA(,并喜欢使用PA的任务调度程序(它每天运行,如果不是星期三,则会进行更改(来发送计划的电子邮件。我在应用程序文件夹中创建了一个新文件,名为:weeklyemailmm.py。settings.py中的电子邮件设置可以与我网站上的其他电子邮件设置配合使用。我做错了什么?

设置.py

EMAIL_HOST = 'xxx'
EMAIL_PORT = 'xxx'
EMAIL_HOST_USER = 'xxx'
EMAIL_HOST_PASSWORD = 'xxx'
EMAIL_USE_TLS = True

我尝试使用以下代码:

from django.core.mail import send_mail
import datetime
from django.conf import settings
settings.configure(settings, DEBUG=True)

today = datetime.date.today()
weekday = today.weekday()
subject = 'New weekly email'
message = 'Hi there!'
if (weekday == 2):
try:
send_mail(
'Subject here',
'Here is the message.',
'from@gmail.com',
['to@gmail.com'],
fail_silently=False,
)
print('It is Wednesday, email sent')
except:
print('It is not Wednesday')
else:
print('Email does not sent')

在这种方式下,我总是得到It is not Wednesday.

如果我删除了try-except部分并删除它,它会说:

RecursionError: maximum recursion depth exceeded while calling a Python object

如果我删除可能是错误的settings.configure(settings, DEBUG=True),它会说:

django.core.exceptions.ImproperlyConfigured: Requested setting EMAIL_BACKEND, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

追溯

PSA/firm/weeklyemailmm.py
Traceback (most recent call last):
File "/Users/ruszakmiklos/Documents/GitHub/MPSA/firm/weeklyemailmm.py", line 23, in <module>
send_mail(
File "/usr/local/lib/python3.9/site-packages/django/core/mail/__init__.py", line 52, in send_mail
connection = connection or get_connection(
File "/usr/local/lib/python3.9/site-packages/django/core/mail/__init__.py", line 34, in get_connection
klass = import_string(backend or settings.EMAIL_BACKEND)
File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 84, in __getattr__
val = getattr(self._wrapped, name)
File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 249, in __getattr__
return getattr(self.default_settings, name)
File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 84, in __getattr__
val = getattr(self._wrapped, name)...

还有第84行和第249行等等

使用电子邮件

from django.core.mail import EmailMessage

today = datetime.date.today()
weekday = today.weekday()
subject = 'New weekly email'
message = 'Hi there!'
if (weekday == 2):
try:
msg = EmailMessage(subject, message, 'from@gmail.com',
['to@gmail.com'])
msg.send()

print('It is Wednesday, email sent')
except:
print('It is not Wednesday')
else:
print('Email does not sent')

最新更新