from smtplib import SMTPException from django.views.generic.edit import CreateView from django.urls import reverse from django.http import HttpResponse from django.core.mail import send_mail, BadHeaderError from django.template.loader import get_template from .models import Employee from .forms import EmployeeForm from .settings import MAILS, EVA_MAIL def success(request): return HttpResponse("gut gemacht!") def send_mail_to_department(department, form): 'send a mail to the given department with the nececcary notifications' print(f'send mail to department {department}...') model = form.save() context = {'data': {}} # add all relevant fields of the form to the template context data = MAILS[department]['DATA'] for key in data: context['data'][key] = form.cleaned_data[key] try: mail_template = get_template(f'evapp/{department}_mail.txt') send_mail( 'EVA: Neuzugang', mail_template.render(context), EVA_MAIL, [MAILS[department]['MAIL']], fail_silently=False) except BadHeaderError: # modell.delete() return HttpResponse('Invalid header found. Data not saved!') except SMTPException: # modell.delete() return HttpResponse('Error in sending mails (propably wrong adress?). Data not saved!') class EvaFormView(CreateView): model = Employee form_class = EmployeeForm def get_success_url(self): return reverse('success') def form_valid(self, form): for dep in MAILS: send_mail_to_department(dep, form) return super().form_valid(form)