Django - Как отправить по электронной почте заполненную форму вида "создать
Я работаю над приложением для управления недвижимостью, в котором пользователи могут заполнить онлайн-заявку на покупку недвижимости. Я хочу настроить его так, чтобы, когда кто-то заполняет заявку, форма отправлялась по электронной почте администратору в отформатированном виде с метками формы. Есть ли способ отправить по электронной почте всю отформатированную форму с метками или мне придется сделать шаблон электронной почты и пометить его в соответствии с тем, как я хочу, чтобы он выглядел?
Мой пример кода:
class ApplicationView(CreateView):
redirect_field_name = ''
form_class = ApplicantForm
model = Applicant
template_name = 'base/application.html'
def form_valid(self, form):
form.instance.created_by = self.request.user
subject = 'New Application - {} {}'.format(
form.cleaned_data.get('first_name'),
form.cleaned_data.get('last_name'),
)
message = '{} {}'.format(
form.cleaned_data.get('first_name'),
form.cleaned_data.get('last_name'),
)
Application_Alert(subject, message)
return super().form_valid(form)
Нам нужно 2 шага:
- В вашем
settings.py
добавьте информацию о вашей электронной почте:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'mail.example.com'
EMAIL_HOST_USER = 'example@mail.com'
EMAIL_HOST_PASSWORD = '******'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
- В свой
views.py
импортируйте настройки:
from django.conf import settings as my_settings
from django.core.mail import EmailMultiAlternatives
def your_def():
subject = f"{request.user} send subject"
from_email = my_settings.EMAIL_HOST_USER
to_email = ['admin@gmail.com', 'admin2@gmail.com'...]
text_content = 'This is an important message.'
# Add your email template here
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, to_email)
msg.attach_alternative(html_content, "text/html")
msg.send()
Вы можете посмотреть документ по адресу здесь.
В электронной почте у вас есть два варианта: текстовый и HTML. Если вы хотите получить письмо с ярлыками и в более красивом формате, вам следует выбрать вариант на основе HTML. Как уже говорилось здесь.
Самый быстрый подход - создать templates/generic/_email.html
и отобразить его в обход контекстной переменной, как в ListView.