2009-12-21 15 views
8

Ich habe in den letzten Tagen daran gearbeitet, Rails zu lernen, und ich bin auf etwas gestoßen, das ich nicht mit Google lösen konnte.Rails ActionMailer Probleme auf dem Mac

Also erstelle ich nur ein einfaches Kontaktformular, das eine E-Mail sendet. Beim Testen scheint alles in Ordnung zu sein, was mir sagt, dass das Formular funktioniert und ActionMailer korrekt implementiert wurde. Ich habe jedoch Probleme beim Konfigurieren von ActionMailer. Ich verwende OSX 10.6.2. Ich habe Postfix ausgeführt und überprüft, dass es mit telnet localhost 25 ausgeführt wird. Wenn ich versuche, das Formular zu verwenden, erhalte ich den Fehler "Verbindung abgelehnt".

Dies ist meine aktuelle Konfiguration:

config.action_mailer.smtp_settings = { 
    :address => 'localhost', 
    :port  => 25 
} 

Ich dachte, ich könnte :domain setzen müssen, aber ich bin ein bisschen verwirrt, was das in dieser Situation festgelegt werden soll.

Antwort

6

Mein Leben ist in etwa 100x einfacher zu laufen: sendmail auf meinem Mac als eine Zustellmethode auf meinem Mac statt: smtp, könnten Sie versuchen, geben Sie das eine Chance. In dieser Antwort gehe ich davon aus, dass Sie nur die Postzustellung auf Ihrem Mac wünschen und sich nicht wirklich darum kümmern, wie es funktioniert.

Die andere Sache, die ich tue, wenn ich die ganze Zeit an einem Projekt mit dem Netz verbunden bin, ist, meine ausgehende ActionMailer-stammende E-Mail so zu konfigurieren, dass sie über Google Mail statt über meinen lokalen Mac läuft.

Dies ist für eine benutzerdefinierte Domäne namens example.com, die auf Google Apps für Domänen eingerichtet ist. Sie können auch einfach ein Google Mail-Konto erstellen und Dinge durch dort senden. (Durch Ändern aller Instanzen von example.com in gmail.com)

0

Funktioniert es, wenn Sie "127.0.0.1" für "localhost" ersetzen, um zu sehen, ob dies eine IPv4-IPv6-Sache oder ein Problem mit Ihrem Resolver ist?

+0

Hm, nein, das hat auch nicht funktioniert. – seth

+0

Wenn die Ausgabe von "netstat -na | grep LISTEN" "tcp4 0 0 * .25 *. * LISTEN" anzeigt, sollten Sie eine Verbindung herstellen. Wenn ":: 1.25" angezeigt wird, befinden Sie sich möglicherweise im IPv6-Modus. Wenn Sie eine lokale Firewall haben, einschließlich Little Snitch, könnte dies auch Ihre Anrufe blockieren. Die einzige Möglichkeit, um sicher zu sein, ist, eine Verbindung direkt von Ruby zu versuchen, z. B. durch einen Komponententest. – tadman

6

Sie müssen den Postfix-Daemon starten. Sie können feststellen, ob Ihr Port offen ist, indem Sie ein Terminal eintippen

die versuchen, eine Verbindung mit dem 25-Port. Es wird keine Verbindung herstellen, wenn postfix nicht ausgeführt wird. Wenn dies der Fall ist, drücken Sie ctl-], um die Verbindung zu beenden und "quit", um telnet zu beenden.

Wenn es nicht anschließen, müssen Sie den Postfix-Daemon starten:

sudo launchctl start org.postfix.master 

und dann versuchen, mit Telnet zu verbinden. es sollte verbinden. Jetzt können Sie E-Mails von Ihrer ActionMailer-Klasse senden.

sudo launchctl stop org.postfix.master 

stoppt den Postfix-Daemon

1

Ich folgte this guide und alles funktioniert einwandfrei. Vor allem:

sudo postfix start 

dann

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address => "localhost", 
    :port => 25 
} 
0

Eine weitere gute Möglichkeit zum Senden und E-Mails zu überprüfen, wenn die Entwicklung enter link description here verwendet.

Zitat von ihrer Website:

MailCatcher läuft einen super einfach SMTP-Server, die jede Nachricht an ihn gesendet fängt in einem Web-Interface angezeigt werden soll. Führen Sie mailcatcher aus, stellen Sie Ihre bevorzugte App so ein, dass sie an smtp://localhost:1025 anstatt an Ihren Standard-SMTP-Server übermittelt wird, und überprüfen Sie dann http://localhost:1080, um die bisher eingetroffene E-Mail anzuzeigen.

Es fängt E-Mails an alle Empfänger ab und macht es daher sehr einfach, alle E-Mails an einem Ort zu überprüfen.