2015-07-27 36 views
5

Kiedy próbuję wysłać przez powłokę ./manage.py, wysłanie pojedynczego e-maila zajmuje kilka minut. Kiedy próbuję wysłać e-mail weryfikacyjny użytkownika po przesłaniu formularza w przeglądarce, przeglądarka przekroczyła limit czasu z 504, ale wiadomość e-mail została ostatecznie wysłana. Co może się dziać?Django send_mail przez Gmaila bardzo powolny

settings.py

... 
EMAIL_HOST = 'smtp.gmail.com'             
EMAIL_HOST_USER = '[email protected]'          
EMAIL_PORT = 587                 
EMAIL_USE_TLS = True                
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER            
EMAIL_HOST_PASSWORD = os.environ.get('PASSWORD') 
... 

views.py

class SignUpView(CreateView):             
    model = User                 
    template_name = 'eventMap/register.html'          
    form_class = RegistrationForm            
    success_url="/"                

    def form_valid(self, form):             
       form.save()              
       username = form.cleaned_data['username']       
       email = form.cleaned_data['email']        
       salt = hashlib.sha1(str(random.random())).hexdigest()[:5]   
       activation_key = hashlib.sha1(salt+email).hexdigest()   
       key_expires = datetime.datetime.today() + datetime.timedelta(2) 

       #Get user by username           
       user=User.objects.get(username=username)       

       # Create and save user profile         
       new_profile = UserProfile(user=user, activation_key=activation_key, 
         key_expires=key_expires)         
       new_profile.save()            

       # Send email with activation key         
       email_subject = 'Account confirmation'       
       email_body = "Hey %s, thanks for signing up. To activate your account, click this link within \ 
       48hours http://mywebsite.com/accounts/confirm/%s" % (username, activation_key) 

       send_mail(email_subject, email_body, '[email protected]', 
         ['[email protected]'], fail_silently=False) 

       return super(SignUpView, self).form_valid(form) 

natknąłem tego posta o czymś podobnym, ale dzienniki nie wspominają nic o niewykwalifikowanego hosta itp /var/log /mail.log

Jul 27 16:26:04 django postfix/qmgr[5975]: CAF7C1226F2: from=<>, size=3063, nrcpt=1 (queue active) 
Jul 27 16:26:34 django postfix/smtp[12874]: connect to example.com[2606:2800:220:1:248:1893:25c8:1946]:25: Connection timed out 
Jul 27 16:27:04 django postfix/smtp[12874]: connect to example.com[93.184.216.34]:25: Connection timed out 
Jul 27 16:27:04 django postfix/smtp[12874]: CAF7C1226F2: to=<[email protected]>, relay=none, delay=368178, delays=368118/0.02/60/0, dsn=4.4.1, status=deferred (connect to example.com[93.184.216.34]:25: Connection timed out) 
+1

Mam również ten problem. Używając bazy kodu z django 1.6, e-mail zostanie wysłany w ciągu kilku sekund, ta sama podstawa kodu na django 1.8 trwa 1-5 minut. Zdecydowałem się po prostu otworzyć nowy wątek, aby obejść ten problem. Oto kod, którego używam https://github.com/ui/django_asynchronous_send_mail – arctelix

Odpowiedz

-1

Możesz nie chcieć wysyłać e-maili za pośrednictwem Gmaila . To naprawdę nie jest zamierzone użycie standardowej usługi smtp, takiej jak Gmail.

Czy próbowałeś skonfigurować powiadomienia e-mail, aby uruchomić usługę dystrybucji poczty, taką jak Mandrill, aby rozpocząć?

Istnieje kilka aplikacji Django, takich jak Djrill, które "po prostu działają" przy użyciu standardowych funkcji e-mail Django, takich jak send_mail().