2016-03-15 3 views
2

Mon courrier a été envoyé sans problème lorsque j'ai exécuté le serveur mais lorsque j'ai ajouté les deux dernières lignes dans views.py, l'e-mail ne peut plus être envoyé. /newsite/mail/views.pymon courrier ne peut plus être envoyé?

from django.core.mail import send_mail, BadHeaderError 
from django.http import HttpResponse, HttpResponseRedirect 
from django.shortcuts import render 

def send(request): 
    subject = request.POST.get('subject', 'subject') 
    message = request.POST.get('message', 'attention ! la temperature a depasse le maximum ') 
    from_email = request.POST.get('from_email', '[email protected]') 
    if subject and message and from_email: 
     try: 
      send_mail(subject, message, from_email, ['[email protected]']) 

     except BadHeaderError: 
      return HttpResponse('Invalid header found.') 
     return HttpResponseRedirect('send_mail') 

    else: 
     # In reality we'd use a form class 
     # to get proper validation errors. 
     return HttpResponse('Make sure all fields are entered and valid.') 

def index(request): 
    return render(request, 'mail/index.html', {}) 

/newsite/mail/urls.py

from django.conf.urls import * 
from . import views 

urlpatterns = [ 
url(r'^$', views.index, name='index'), 
url(r'^$', views.send, name='send'), 
] 

/newsite/newsite/settings.py

EMAIL_HOST='smtp.gmail.com' 
EMAIL_PORT=587 
EMAIL_HOST_USER='[email protected]' 
EMAIL_HOST_PASSWORD='xxxxxxxxx' 
EMAIL_USE_TLS = True 
+0

Pourriez-vous ajouter le fichier 'mail/index.html' s'il vous plaît? – Pcriulan

+0

c'est un simple fichier html Alerte l'alerte à l'Est Votre client Envoyé – 2mesfe

+0

Quelles sont les lignes que vous avez ajoutés? Avez-vous des messages d'erreur? – ilse2005

Répondre

4

Le problème est votre urlpatterns. Vous utilisez la même adresse regex/url pour index et send. Changez l'URL de send.

urlpatterns = [ 
url(r'^$', views.index, name='index'), 
url(r'^send-mail/$', views.send, name='send'), 
] 

Maintenant, le courrier doit être envoyer lorsque vous accédez /send-mail/

+0

quand je l'exécute il envoie au moins 5 mails et il montre cette erreur "la page n'est pas redirigée correctement". Mon but est quand le courrier est envoyé une page peut être montrée afin d'informer que le message est envoyé! Je ne savais pas comment le faire – 2mesfe

+0

Vous essayez de rediriger vers 'send_mail'. Mais cela n'existe pas. Essayez ceci: 'return HttpResponseRedirect ('/')' – ilse2005

+0

Merci pour votre aide cela fonctionne maintenant^_ ^! mais puis-je vous demander comment puis-je laisser le fichier html apparaît instantanément lorsque le mail envoyé je veux dire quand j'accède à/mail/send_mail le courrier sera envoyé et en même temps la page html apparaît montrant que le msg envoyé – 2mesfe