Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Definiendo una cabecera en el envío de un correo en mi aplicación Django

5 de julio de 2015

Muy buenas a todos, estoy intentando implementar un sencillo ContactForm en mi pagina de práctica, en principio la lógica del código del que dispongo hasta el momento me está funcionando perfectamente, el formulario envía el correo a una dirección de email que he designado.

Para esto me estoy valiendo de un "template" que respeta las variables de mi formulario de esta forma:

Como pueden observar al final de mi clase ContactView adicioné el solicitado codigo para manipular el header del correo al ser recibido y poder ver el correo del remitente allí:

headers={'Reply-to': contact_email}

El problema es que la variable contact_email no me la reconoce, definitivamente mi falencia radica en que presuntamemte nunca la he declarado.

Que debería cambiar en mi codigo para poder mencionar esta referencia correctamente; anteriormente mi codigo lucía de esta forma, lo unico que intento es hacer que la app luzca lo menos redundante posible =S.

De antemano agradezco cualquier sugerencia.

Un saludo.


Respuestas

#1

La nueva versión del views.py es mucho más limpia y concisa, pero eso no quita para que debas obtener la variable contact_email de alguna manera antes de utilizarla. Así que como mínimo tendrás que usar lo siguiente:

class ContactView(FormView):
 
    form_class = ContactForm
    template_name = 'contact/contact.html'
    success_url = '/'
 
    def form_valid(self, form):
        template = get_template('contact/contact_template.txt')
        context_dict = form.cleaned_data
        context_dict['form_content'] = form.cleaned_data['content']
        context = Context(context_dict)
        content = template.render(context)
 
        email = EmailMessage(
            "New contact form submission",
            content,
            "www.prueba.com" + '<[email protected]>',
            ['[email protected]'],
            headers={'Reply-to': context_dict['contact_email']}
        )
        email.send()
        return super(ContactView, self).form_valid(form)

Si no te gusta context_dict['contact_email'], tendrás que usar form.cleaned_data['contact_email'].

@javiereguiluz

5 julio 2015, 14:05
#2

En efecto se trataba de ese método de obtención, agradezco tu ayuda amigo!

@AlexDamas

5 julio 2015, 14:46