2015-07-27 15 views
5

Khi tôi thử gửi qua ./manage.py, phải mất vài phút để gửi một email. Khi tôi cố gắng gửi email xác minh người dùng sau khi gửi biểu mẫu trong trình duyệt, trình duyệt sẽ hết thời gian với 504, nhưng email cuối cùng cũng được gửi. Điều gì có thể xảy ra?Django send_mail thông qua gmail rất chậm

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) 

Tôi đã xem qua bài viết này về một cái gì đó tương tự nhưng các bản ghi không đề cập đến bất cứ điều gì về một hostname vv không đủ tiêu chuẩn /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

Tôi cũng gặp sự cố này. Sử dụng codebase từ django 1.6, email được gửi trong vài giây, cùng mã cơ sở trên django 1.8 mất 1-5 phút. Tôi quyết định chỉ cần mở một chuỗi mới để giải quyết vấn đề. Đây là mã tôi đang sử dụng https://github.com/ui/django_asynchronous_send_mail – arctelix

Trả lời

-1

Bạn có thể không muốn gửi email qua gmail . Nó không thực sự là mục đích sử dụng cho một dịch vụ smtp tiêu chuẩn như Gmail.

Bạn đã thử định cấu hình thông báo qua email của mình để chạy qua dịch vụ phân phối thư như Mandrill để bắt đầu?

Có một vài ứng dụng Django như Djrill rằng "chỉ hoạt động" bằng cách sử dụng các chức năng email chuẩn của Django như send_mail().