Как устранить ошибку Bad Request 400 с помощью функции send_mail?
Я использую React frontend для отправки данных из контактной формы с реактивным рендерингом в Django backend, который отправляет данные в виде электронного письма. Однако я продолжаю получать ошибку 400 Bad Request. Я пытался использовать функцию send_mail в оболочке, но получаю эту ошибку: "socket.gaierror: [Errno 11001] getaddrinfo failed"
Contact.js
const sendEmail = () => {
const csrfCookie = Cookies.get('csrftoken');
console.log(formValue);
axios.post("contact/", formValue, {
headers: {
'X-CSRFTOKEN': csrfCookie,
},
})
.then(response => {
console.log(response);
})
.catch(error => {
console.log(error);
});
};
const handleSubmit = (event) => {
event.preventDefault();
sendEmail();
setFormValue({
name: "",
email: "",
message: "",
});
};
urls.py
from django.urls import path
from django.views.generic import TemplateView
from .views import Contact
app_name = "core"
urlpatterns = [
path("", TemplateView.as_view(template_name="core/home.html"), name="home"),
path("contact/", Contact.as_view(), name="contact"),
]
views.py
class Contact(APIView):
def post(self, request):
serializer = ContactSerializer(data=request.data)
if serializer.is_valid():
form = serializer.data
subject = "Website Inquiry"
body = {
"name": form["name"],
"email": form["email"],
"message": form["message"],
}
message = "\n".join(body.values())
try:
send_mail(
subject,
message,
settings.EMAIL_HOST_USER,
[settings.RECIPIENT_ADDRESS],
)
return Response(serializer.data, status=status.HTTP_201_CREATED)
except:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
settings.py
env = environ.Env()
environ.Env.read_env()
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "EMAIL_HOST"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = env("EMAIL_HOST_USER")
EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD")
RECIPIENT_ADDRESS = env("RECIPIENT_ADDRESS")
Может быть, потому что ваша EMAIL_HOST
неправильная?
env = environ.Env()
environ.Env.read_env()
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = env("EMAIL_HOST") # <-------- load from env
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = env("EMAIL_HOST_USER")
EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD")
RECIPIENT_ADDRESS = env("RECIPIENT_ADDRESS")