我正在使用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')