def contact_index(request): # Create objects for context # Retrieve contact points (social media, github, etc.) contact_points = ContactPoint.objects.order_by('n_page_order') # Create empty form contact_form = ContactForm() if request.method == 'POST': contact_form = ContactForm(request.POST) if contact_form.is_valid(): # Get value of input from spam check field spam_check = contact_form.cleaned_data['spam_check'] # Check spam check input if not spam_check: # Create email contents # Get the person's name name = contact_form.cleaned_data['name'] # Create the email subject using their name subject = 'New message from ' + name # Get the person's message message = contact_form.cleaned_data['message'] # Before emailing, write message to DB so that it is not lost if the email fails contact_message = ContactMessage(t_name=name, t_message=message) # Save the message to the DB contact_message.save() # Try sending the email try: # Send email using send_mail function send_mail(subject, message, settings.EMAIL_HOST_USER, ['*****@*****.**'], fail_silently=False) # Add code here for success message messages.success(request, 'Message sent!') return HttpResponseRedirect('/contact/') except BadHeaderError: # Add code here for failure message messages.failure(request, 'Uhh, what are you doing?') return HttpResponseRedirect('/contact/') except Exception as e: print(e) # Display this anyway - we at least stored the message # Could add code to email admin that message was saved, but not emailed messages.success(request, 'Your message was sent!') return HttpResponseRedirect('/contact/') else: messages.success(request, 'Message sent! ;)') return HttpResponseRedirect('/contact/') else: return HttpResponseRedirect('/contact/') # Anything but a POST request else: # Create context context = { 'contact_points': contact_points, 'contact_form': contact_form, } # Return request with context return render(request, 'contact_index.html', context)