Почта веб-приложения Django с использованием Sendgrid или Amazon SES - Не получение писем

Большое спасибо за помощь людям в решении программных вопросов. Я разрабатываю простое веб-приложение, используя Django, и я хотел бы иметь контактную форму, чтобы пользователи могли связаться со мной для обратной связи и других тем. Эта почта будет приходить в мой Gmail для более простого общения.

Я следовал многим руководствам и обновлял settings.py, forms.py и views.py много раз, и я все еще не получал никакого письма, если я не отправлял его через cmd следующим образом:

from django.core.mail import send_mail
send_mail(
    'Subject here',
    'Here is the message.',
    'validated email',
    ['validated email']
)

Я, конечно, создал учетные записи в SendGrid и Amazon SES, подтвердил электронные письма и использовал ключи.

для views.py я использовал эти два представления контактов, одно или другое, и я изменял любую их часть много раз, пытаясь получить получение электронной почты, не обращайте внимания, если есть проблемы с отступами, с Visual Studio это легко исправить, также подтвержденный email - это email, который я использовал с SES или Sendgrid

from django.shortcuts import render, redirect
from .forms import ContactForm
from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect
from django.conf import settings

def contact(request):
    if request.method == 'POST':
       form = ContactForm(request.POST)
       if form.is_valid():
            subject = "Contact" 
           body = {
           'first_name': form.cleaned_data['first_name'], 
            'last_name': form.cleaned_data['last_name'], 
            'email': form.cleaned_data['email'], 
            'message':form.cleaned_data['message'], 
            }
            message = "\n".join(body.values())

            try:
                send_mail(subject, message, 'validated email', ['validated email'], fail_silently=False) 
            except BadHeaderError: #add this
                return HttpResponse('Invalid header found.')   
            

    form = ContactForm()
    return render(request, 'contact.html', {'form':form})

или

def contact(request):
    if request.method == 'POST':    
    
        form = ContactForm(request.POST)

        if form.is_valid():
                
            try:               
                first_name = request.POST.get('first_name')
                last_name = request.POST.get('last_name')
                email = request.POST.get('email')
                message = request.POST.get('message')              
    
                send_mail(first_name, last_name, email, message, 'validated email', ['validated email'], fail_silently=False)

            except BadHeaderError:
                return HttpResponse('Invalid header found.')
                
        return HttpResponse('Thank you')
        
    form = ContactForm
    return render(request, 'contact.html', {'form':form})

forms.py

from django import forms


class ContactForm(forms.Form):
    first_name = forms.CharField(max_length = 50)
    last_name = forms.CharField(max_length = 50)
    email = forms.EmailField(max_length = 150)
    message = forms.CharField(widget = forms.Textarea, max_length = 2000)

Я действительно много раз манипулировал настройками для обоих компаний, выходя и добавляя код, но любое изменение, кажется, не работает.

Amazon SES settings.py

EMAIL_BACKEND = 'django_ses.SESBackend'
AWS_ACCESS_KEY_ID = '***CM7Y7'
AWS_SECRET_ACCESS_KEY = '***n8GKA+sp80cY'
AWS_SES_REGION_NAME = 'eu-west-2' #(ex: us-east-2)
AWS_SES_REGION_ENDPOINT ='email.eu-west-2.amazonaws.com' #(ex: email.us-east-2.amazonaws.com)

Sendgrid settings.py

EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey' # this is exactly the value 'apikey'
SENDGRID_API_KEY = 'SG.JFR****' # this is your API key
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_BACKEND = 'sgbackend.SendGridBackend'
SENDGRID_SANDBOX_MODE_IN_DEBUG = True
SENDGRID_ECHO_TO_STDOUT = True

форма часть contact.html

<form class="border-right pr-5 mb-5" method="post" id="contactForm" name="contactForm">
               {% csrf_token %}
                <div class="row">
                  <div class="col-md-6 form-group">
                    <input type="text" class="form-control" name="first_name" id="first_name" placeholder="First name">             
                  </div>
                  <div class="col-md-6 form-group">
                    <input type="text" class="form-control" name="last_name" id="last_name" placeholder="Last name">
                  </div>
                </div>
                <div class="row">
                  <div class="col-md-12 form-group">
                    <input type="text" class="form-control" name="email" id="email" placeholder="Email">
                  </div>
                </div>

                <div class="row">
                  <div class="col-md-12 form-group">
                    <textarea class="form-control" name="message" id="message" cols="30" rows="7" placeholder="Write your message"></textarea>
                  </div>
                </div>
                <div class="row">
                  <div class="col-md-12">
                    <input type="submit" value="Send Message" class="btn btn-primary rounded-0 py-2 px-4">
                    <span class="submitting"></span>
                  </div>
                </div>
                
              </form>

В командной строке и с помощью инструментов разработчика в chrome и firefox, все вроде бы работает, но я не получаю никаких писем в моем аккаунте Gmail не в папке спам. Я буду очень признателен, если вы сможете мне помочь, потому что я проверил множество руководств и постов, отредактировал много кода, но все еще не вижу, что это работает. Большое спасибо заранее, любое предложение будет приветствоваться.

Вернуться на верх