Error: SMTPRecipientsRefused 553, ‘5.7.1 # mientras se trabaja en el formulario de contacto en django

Estoy tratando de hacer un formulario de contacto en Django 1.3, Python 2.6.

¿Cuál es la razón de seguir el error?

error:

SMTPRecipientsRefused at /contact/ {'test@test.megiteam.pl': (553, '5.7.1 : Sender address rejected: not owned by user test@test.megiteam.pl')} 

mi settings.py:

 EMAIL_HOST = 'test.megiteam.pl' EMAIL_HOST_USER = 'test@test.megiteam.pl' EMAIL_HOST_PASSWORD = '###' DEFAULT_FROM_EMAIL = 'test@test.megiteam.pl' SERVER_EMAIL = 'test@test.megiteam.pl' EMAIL_USE_TLS = True 

edición: si alguien más1 estaba siguiendo a djangobook, esta es la parte que lo causa:

  send_mail( request.POST['subject'], request.POST['message'], request.POST.get('email', 'noreply@example.com'), #get rid of 'email' ['siteowner@example.com'], 

La explicación está en el mensaje de error. Su randomacc@hotmail.com correo electrónico está rechazando el correo electrónico debido a la dirección del remitente randomacc@hotmail.com que ha tomado del formulario de contacto.

En su lugar, debe usar su propia dirección de correo electrónico como la dirección del remitente. Puede usar la opción reply_to para que las respuestas vayan a su usuario.

 email = EmailMessage( 'Subject', 'Body goes here', 'test@test.megiteam.pl', ['to@example.com',], reply_to='randomacc@hotmail.com', ) email.send() 

En Django 1.7 y reply_to anteriores, no hay un argumento reply_to , pero puede establecer manualmente un encabezado Reply-To :

 email = EmailMessage( 'Subject', 'Body goes here', 'test@test.megiteam.pl', ['to@example.com',], headers = {'Reply-To': 'randomacc@hotmail.com'}, ) email.send() 

Editar:

En los comentarios, preguntó cómo incluir la dirección del remitente en el cuerpo del mensaje. El message y from_email son solo cadenas, por lo que puede combinarlos como desee antes de enviar el correo electrónico.

Tenga en cuenta que no debe obtener el argumento from_email de su clean_data. Usted sabe que la from_address debe ser test@test.megiteam.pl , así que use eso, o tal vez importe DEFAULT_FROM_EMAIL desde su configuración.

Tenga en cuenta que si crea un mensaje con EmailMessage como en mi ejemplo anterior y configura la respuesta al encabezado, su cliente de correo electrónico debería hacer lo correcto cuando presione el botón de respuesta. El siguiente ejemplo utiliza send_mail para mantenerlo similar al código al que se vinculó .

 from django.conf import settings ... if form.is_valid(): cd = form.cleaned_data message = cd['message'] # construct the message body from the form's cleaned data body = """\ from: %s message: %s""" % (cd['email'], cd['message']) send_mail( cd['subject'], body, settings.DEFAULT_FROM_EMAIL, # use your email address, not the one from the form ['test@test.megiteam.pl'], )