TypeError at /contact/ - аргумент "to" должен быть списком или кортежем - Django
Я хочу отправить данные электронной почты контактной формы на почтовый идентификатор домена, но при заполнении всех полей контактной формы и ее отправке я получаю ошибку -
Значение исключения: аргумент "to" должен быть списком или кортежем.
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
)