2010-04-20 10 views
6

In einem sehr großen Fehler läuft. Ich verwende Django auf meinem Mac OSX und als ich versuchte, eine E-Mail von meiner Anwendung zu senden, hängt es und gibt mir diesen Fehler: "Fehler 61 Connection Refused"Django send_mail führt zu Fehler 61 verweigert auf Mac OSX

Irgendwelche Ideen? Ich habe meine Firewall nicht eingeschaltet. Ich kann bei Bedarf ein Bild des Fehlers hochladen.

+0

Kühl. Also habe ich configs in meinem settings.py hinzugefügt, aber jetzt bekomme ich das: "Fehler 60, Operation Timed Out". Ausnahme Ort: ... python2.6/socket.py in create_connection – mymmaster

Antwort

3

Haben Sie tatsächlich die Einstellungen EMAIL_* in settings.py konfiguriert? Fehler 61 ist der Fehler, den Sie erhalten, wenn Sie die Standardwerte beibehalten und kein lokaler SMTP-Server ausgeführt wird.

Alternativ, wie Peter vorgeschlagen hat, müssen Sie, wenn Sie es eingerichtet haben, möglicherweise die Authentifizierung mit Ihrem SMTP-Server verwenden.

+0

Danke. Lass mich das überprüfen. – mymmaster

+0

Update oben veröffentlicht! – mymmaster

1

Da Max OS X völlig unwissend ist, wäre meine erste Vermutung, dass Ihr SMTP-Server eine Authentifizierung erfordert.

1

Seine einfache, wenn sendmail über Kommandozeilen funktioniert, kopieren Sie den Code aus http://djangosnippets.org/snippets/1864/ in einer Datei namens 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 

Innerhalb von Einstellungen .py, setze die Variable:

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

Willkommen beim Stapelüberlauf. – qdot

Verwandte Themen