2010-04-20 66 views
6

遇到非常嚴重的錯誤。我在我的Mac OSX運行Django的,當我試圖發送從我的應用程序的電子郵件它掛起,給我這個錯誤:「錯誤61連接被拒絕」Django send_mail導致錯誤61在Mac OSX上被拒絕

任何想法?我沒有打開防火牆。如果需要,我可以上傳錯誤圖片。

+0

酷。所以我在我的settings.py中添加了配置,但現在我得到了這個: 「錯誤60,操作超時」。 異常位置:...在create_connection中的python2.6/socket.py – mymmaster 2010-04-23 00:15:21

回答

3

你有沒有實際配置settings.py中的EMAIL_*設置?錯誤61是您將其保留爲默認值並且沒有運行本地SMTP服務器時發生的錯誤。

另外,彼得建議,如果你設置它,那麼你可能需要使用身份驗證與SMTP服務器。

+0

謝謝。讓我檢查一下。上面發佈了 – mymmaster 2010-04-22 03:36:02

+0

更新! – mymmaster 2010-04-23 00:15:38

1

被完全馬克斯OS X無知,我的第一個猜測是,您的SMTP服務器需要身份驗證。

1

它的簡單,如果通過的sendmail命令行工作,從http://djangosnippets.org/snippets/1864/將代碼複製到一個名爲sendmail.py

"""sendmail email backend class.""" 

import threading 

from django.conf import settings 
from django.core.mail.backends.base import BaseEmailBackend 
from subprocess import Popen,PIPE 

class EmailBackend(BaseEmailBackend): 
    def __init__(self, fail_silently=False, **kwargs): 
     super(EmailBackend, self).__init__(fail_silently=fail_silently) 
     self._lock = threading.RLock() 

    def open(self): 
     return True 

    def close(self): 
     pass 

    def send_messages(self, email_messages): 
     """ 
     Sends one or more EmailMessage objects and returns the number of email 
     messages sent. 
     """ 
     if not email_messages: 
      return 
     self._lock.acquire() 
     try: 
      num_sent = 0 
      for message in email_messages: 
       sent = self._send(message) 
       if sent: 
        num_sent += 1 
     finally: 
      self._lock.release() 
     return num_sent 

    def _send(self, email_message): 
     """A helper method that does the actual sending.""" 
     if not email_message.recipients(): 
      return False 
     try: 
      ps = Popen(["sendmail"]+list(email_message.recipients()), \ 
         stdin=PIPE) 
      ps.stdin.write(email_message.message().as_string()) 
      ps.stdin.flush() 
      ps.stdin.close() 
      return not ps.wait() 
     except: 
      if not self.fail_silently: 
       raise 
      return False 
     return True 

裏面的設置的.py,設置變量:

EMAIL_BACKEND = 'path.to.sendmail.EmailBackend' 
+1

歡迎來到堆棧溢出。 – qdot 2012-10-11 10:48:10

相關問題