我在为django项目设置电子邮件选项时遇到了一些问题。我正在使用邮局作为后端,但我似乎无法让任何东西排队。
views.py:
from django.views.generic import TemplateView
from post_office import mail
class EmailView(TemplateView):
model = Customer
mail.send(
'a.sophiewirth@gmail.com', # List of email addresses also accepted
'your.generic.test.email@gmail.com',
subject='My email',
message='Hi there!',
html_message='Hi <strong>there</strong>!',
)
template_name = 'customers/send_email.html'settings.py:
# using post office as the default email backend
EMAIL_BACKEND = 'post_office.EmailBackend'
POST_OFFICE = {
'DEFAULT_PRIORITY' : 'now'
}
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = "your.generic.test.email@gmail.com"
EMAIL_PORT = 25 # default smtp port
EMAIL_HOST_PASSWORD = "password"
EMAIL_USE_TLS = False
DEFAULT_FROM_EMAIL = 'your.generic.test.email@gmail.com'urls.py:
from django.conf.urls import patterns, include, url
from customers.views import CustomerList, CreateCustomerView, CustomerUpdateView, EmailView
from . import views
urlpatterns = patterns('',
url(r'^$', CustomerList.as_view(), name="customer-list"),
url(r'^create-customer$', CreateCustomerView.as_view(), name="create-customer"),
url(r'^customer-update/(?P<pk>\d+)$', CustomerUpdateView.as_view(), name="customer-update"),
url(r'^send-email$', EmailView.as_view(), name="send-email"),
)到目前为止,send_email.html本身是非常空的,它只包含一个段落来告诉你你发送了一封电子邮件。
谁能告诉我为什么什么都没有发送?另外,如何才能将电子邮件的收件人作为我要发送邮件的特定用户添加到视图中?
非常感谢:)
发布于 2015-03-17 19:59:56
我同时安装了djcelery和Django celery email。这是在一个较老的项目中,我相信djcelery不再需要,但我的设置应该仍然会给你一个开始。我的Django设置包括以下内容:
import djcelery
...
djcelery.setup_loader()
EMAIL_BACKEND = 'post_office.EmailBackend'
POST_OFFICE_BACKEND = 'djcelery_email.backends.CeleryEmailBackend'我的项目还包括一个shell脚本,我运行它来启动和配置celery守护进程。我的项目是在一个virtualenv中运行的,所以你可能不需要其中的一些东西。
#!/bin/bash
set -e
# user/group to run as
USER=your_username
GROUP=your_groupname
cd /path/to/virtualenv/
source ./bin/activate
cd /path/to/directory/containing/manage.py/
exec python manage.py celeryd --settings=directory.path.settings.py运行shell脚本应该会显示一个正在运行的celery进程,您的电子邮件现在应该会顺利地发送和排队。
发布于 2021-07-18 20:38:13
立即删除默认优先级,并将'CELERY_ENABLED': True添加到POST_OFFICE设置,如下所示:
POST_OFFICE = {
'CELERY_ENABLED': True,
}之后,当你启动celery worker时,你应该会看到2个任务来自
post_office
post_office.tasks.cleanup_expired_mails
post_office.tasks.send_queued_mail https://stackoverflow.com/questions/29097518
复制相似问题