2017-07-15 2 views
0

J'ai des problèmes avec ma fonction send_mail dans mon environnement de production à Heroku. Mes paramètres.py sont identiques pour le local et pour la production et Gmail envoie les emails correctement quand je teste dans le localhost, mais pour une raison quelconque je reçois une ERREUR SERVEUR 500 et je ne reçois même pas l'erreur les logs de django dans mon email d'Admin (probablement pour la même raison).Django: send_mail ne fonctionne pas [uniquement pour la production]

Je l'ai déjà fait avant et il est vraiment étrange que cela se produise. Et le même Gmail l'avait déjà fait pour le développement local, donc je ne pense pas que le problème soit là. J'utilise Python 3.6, Django 1.1 et Heroku.

Voici mon code:

settings.py

EMAIL_HOST = 'smtp.gmail.com' 
from .passwords import EMAIL_HOST_USER 
from .passwords import EMAIL_HOST_PASSWORD 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER 
SERVER_EMAIL = EMAIL_HOST_USER 

from .passwords import ADMINS 
MANAGERS = ADMINS 

views.py

from django.conf import settings 
from django.core.mail import send_mail 
from django.http import HttpResponseRedirect 
from django.shortcuts import render 

from .forms import LandingPageMapasForm 
def mapas(request): 
    form = LandingPageMapasForm(request.POST or None) 
    context = { 
     "form": form, 
    } 
    if form.is_valid(): 
     obj = form.save(commit=False) 
     # obj.user = self.request.user 
     obj.save() 

     form_empresa = form.cleaned_data.get('empresa') 


     subject = '%s - Solicitação de Orçamento' %(form_empresa) 
     contact_message = 'message' 
     context = {} 
     from_email = '[email protected]' 
     to_email = ['[email protected]ng.com.br'] 

     send_mail(
      subject, 
      contact_message, 
      from_email, 
      to_email, 
      fail_silently = False, 
     ) 

     return HttpResponseRedirect('http://geoeng.com.br/muito-obrigado/') 

    return render(request, 'mapas.html', context) 
+0

Je ne sais pas la raison, mais même chose est arrivé à moi avec Django send_mail dans la production coincé avec ce problème mais laissé en fin de compte et utilisé smtplib –

+0

J'ai tourné Debug = True sur Production pour voir l'erreur et j'ai 'SMTPAuthenticationError' Je comprends maintenant le problème. Lorsque j'envoie de l'environnement local, Gmail le voit comme venant de mon ordinateur et c'est ok. Mais quand je le fais en production ça vient d'Ashburn, VA, EUA et Gmail ne l'accepte pas, même quand j'ai dit que c'était moi, mais je n'ai jamais eu un problème similaire avec d'autres comptes. Vous ne savez pas comment résoudre ce problème maintenant ... –

Répondre

0

Ok, il se révèle n'a rien à voir avec mon code. Gmail n'était pas content que mon compte soit accessible depuis Ashburn, VA, EUA (où Heroku fait soi-disant ça). J'ai donc dû jouer un peu avec mes configurations et à la fin j'ai changé le mot de passe pour un nouveau (plus sûr) et tout a commencé à fonctionner correctement.

En bref:

LA QUESTION A ÉTÉ AVEC GMAIL

CHANGÉ LE MOT DE PASSE ET DÉBUTS AU TRAVAIL