TypeError at /contact/ - аргумент "to" должен быть списком или кортежем - Django

Я хочу отправить данные электронной почты контактной формы на почтовый идентификатор домена, но при заполнении всех полей контактной формы и ее отправке я получаю ошибку -

Значение исключения: аргумент "to" должен быть списком или кортежем. enter image description here


views.py code

from django.contrib.messages.api import error
from django.shortcuts import render
from django.core.mail import send_mail
from website.models import Contact
from django.contrib import messages


def contact(request):
    if request.method == 'POST':
        name = request.POST['name']
        phone = request.POST['phone']
        email = request.POST['email']
        address = request.POST['address']
        subject = request.POST['subject']
        message = request.POST['message']

        # All Filling Fields Values sending to the contact page so that fields values can be available during any error

        form_data = {'name': name, 'phone': phone, 'email': email,
                     'address': address, 'subject': subject, 'message': message}

                            
        # send an email
        send_mail(
            name, # Subject
            phone, # message
            email, # from email
            address, # Address
            subject, # Subject
            message, # message
            'mail@domain.com', # from Email
            ['toemail@gmail.com',], # To email            
        )

        # Form Validation
        error_message = None

        if (not name):
            error_message = "Name Required !!"
        elif name:
            if len(name) < 3:
                error_message = "Name must be 3 character long"
        elif not phone:
            error_message = "Phone Number Requird"
        elif len(phone) < 10:
            error_message = "Phone number must be 10 character long."
        elif not subject:
            error_message = "Please fill the value of Subject. "
        elif not message:
            error_message = "Please tell us some brief about the requirement in the Message Box."

        if not error_message:
            contact = Contact(name=name, phone=phone, email=email,
                              address=address, subject=subject, message=message)
            contact.save()
            data = {'error': error_message, 'name': name, 'values': form_data}
            return render(request, 'contact.html', data)
        else:
            data = {'error': error_message, 'name': name, 'values': form_data}
            return render(request, 'contact.html', data)
    else:
        return render(request, 'contact.html', {})

Models.py - Код

from django.db import models

class Contact(models.Model):
    sno = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)
    phone = models.CharField(max_length=15)
    email = models.EmailField()
    address = models.CharField(max_length=200)
    subject = models.CharField(max_length=150)
    message = models.TextField()
    time = models.DateTimeField(auto_now_add=True, blank=True)

Contact.html - файл Код

Код файла Settings.py

EMAIL_HOST = 'mail.domain.com'

EMAIL_PORT = 465

EMAIL_HOST_USER = 'mail@domain.com'

EMAIL_HOST_PASSWORD = '********'

EMAIL_USE_TLS = True

Пожалуйста, подскажите, как решить эту проблему.

Ваши send_mail аргументы не совпадают с требуемыми (см. https://docs.djangoproject.com/en/3.2/topics/email/#quick-example).

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


email_body = '{name}\n\n    {phone} - {email} - {address} \n\n {message}'.format(**form_data))

send_mail(
    subject,
    email_body,
    'mail@domain.com', # from Email
    ['toemail@gmail.com',], # To email  
)

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