2012-10-22 34 views
6

Tôi thậm chí không chắc chắn cách gỡ lỗi này: Tôi đang sử dụng send_mail trong một chế độ xem của tôi ở Django. Nó hoạt động tốt khi sử dụng ứng dụng cục bộ (sử dụng cùng một cài đặt SMTP tôi sử dụng trong sản xuất), và nó hoạt động tốt từ vỏ trong sản xuất (một lần nữa, bằng cách sử dụng các thiết lập tương tự). Nhưng khi tôi thực sự sử dụng ứng dụng trong sản xuất, tin nhắn không gửi. Bất kỳ ý tưởng làm thế nào để khắc phục sự cố?Send_mail ở Django, hoạt động trong trình bao, hoạt động cục bộ, không phải ở chế độ xem

Tôi sẽ không dán toàn bộ chế độ xem nhưng đây là phần có liên quan.

if request.method == 'POST': 
    message, form = decideform(request.POST) 
    if form.is_valid(): 
     invitation.status = form.cleaned_data['status'] 
     invitation.save() 
     message, form = decideform(request.POST) 
     update = 'Thank you for updating your status.' 

     # Send an email confirming their change 
     subject = 'Confirming your RSVP [%s %s]' % (invitation.user.first_name, invitation.user.last_name) 
     body = message + ' Remember, the URL to update or change your RSVP is http://the.url%s.' % invitation.get_absolute_url() 
     send_mail(subject, body, '[email protected]', ['[email protected]', invitation.user.email], fail_silently=True) 

Và đây là các bit tương ứng từ tập tin local_settings tôi, với các chi tiết nổi bật thay đổi vì lợi ích an ninh của:

EMAIL_HOST = 'mail.mydomain.com' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 
EMAIL_HOST_USER = '[email protected]' 
DEFAULT_FROM_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'p4ssw0rd' 
+3

Chào mừng bạn đến với SO! Bạn đã thử sử dụng 'fail_silently = False' và tìm kiếm bất kỳ' SMTPException' nào chưa? –

+0

Cảm ơn bạn, César! Tôi đã thử nó với cờ fail_silently thiết lập để False (cục bộ, trong vỏ sản xuất, và từ các ứng dụng trong sản xuất), và bắt không có SMTPExceptions tại bất kỳ điểm nào. (Tôi giả định rằng ứng dụng trong sản xuất sẽ viết ngoại lệ đó cho nhật ký lỗi.) – mthomps

Trả lời

0

Kiểm tra quyền. Có thể bạn có quyền chạy send_mail nhưng ứng dụng thì không.

0

Tôi gặp vấn đề tương tự. 3 năm sau :) Copy đoạn mã của inline send_mail cố định nó nhưng tôi vẫn không biết tại sao

 connection = django.core.mail.get_connection(username=None, password=None, fail_silently=False) 
     mail = django.core.mail.message.EmailMessage('hello', 'world', '[email protected]', ['[email protected]'],            connection=connection) 
     mail.send()    
0

Bạn có thể thử Django-sendgrid thay vì đó là rất dễ dàng để thiết lập configure.Use như thế này

EMAIL_BACKEND = "sgbackend.SendGridBackend" 
SENDGRID_USER = 'xxxxxx' 
SENDGRID_PASSWORD = 'xxxxxx' 
EMAIL_PORT = 1025 
Các vấn đề liên quan