2010-02-28 9 views
1

J'ai écrit un simple formulaire de contact pour un client dans Django. Cependant, chaque fois qu'il envoie un e-mail, il enveloppe les valeurs d'en-tête dans u '' objets. Par exemple, la tête From: estDjango envoie un e-mail autour des en-têtes

From: (u'[email protected]',) 

Voici le code qui envoie le message:

La forme:

class ContactForm(forms.Form): 
    name = forms.CharField(max_length=100) 
    sender = forms.EmailField() 
    subject = forms.CharField(max_length=255) 
    message = forms.CharField(widget=forms.widgets.Textarea(attrs={'rows':15, 'cols': 72})) 

La fonction de contact:

def contact(request): 
    RECAPTCHA_PRIVATE_KEY = '******************' 
    captcha_error = '' 
    if request.method == 'POST': 
    form = ContactForm(request.POST) 
    captcha_response = captcha.submit(request.POST.get("recaptcha_challenge_field", None), 
         request.POST.get("recaptcha_response_field", None), 
         RECAPTCHA_PRIVATE_KEY, 
         request.META.get("REMOTE_ADDR", None)) 

    if not captcha_response.is_valid: 
     captcha_error = "&error=%s" % captcha_response.error_code 
    elif form.is_valid(): 
     name = form.cleaned_data['name'], 
     sender = form.cleaned_data['sender'], 
     subject = form.cleaned_data['subject'], 
     message = form.cleaned_data['message'] 

     recipients = ['[email protected]'] 
     try: 
     send_mail(subject, message, sender, recipients) 
     except BadHeaderError: 
     pass 

     flash_message = 'Thank you for contacting us. We will get back to you shortly.' 

     return render_to_response('pages/contact.html', { 
     'form': form, 
     'captcha_error': captcha_error, 
     'message': flash_message 
     }) 

Il envoie l'e-mail parfaitement, je vérifie la boîte aux lettres appropriée et l'e-mail apparaît. Mais ces objets empêchent le sujet de l'e-mail d'apparaître correctement et l'empêche d'y répondre.

Qu'est-ce que je fais mal?

Merci d'avance.

Répondre

7

perdre les virgules de fin ici:

elif form.is_valid(): 
     name = form.cleaned_data['name'] 
     sender = form.cleaned_data['sender'] 
     subject = form.cleaned_data['subject'] 
     message = form.cleaned_data['message'] 
+3

virgules Trailing font ces éléments 'tuples' avec un élément. – MattH

+0

Oh et c'est une erreur facile à faire surtout lors de la refactorisation du code. – MattH

+0

Wow, je n'aurais jamais deviné ça. Merci beaucoup! – mjaz