2009-11-24 5 views
23

Ich versuche, über E-Mail in Schienen zu lernen. Ich entwickle etwas auf localhost. Ist es möglich, eine E-Mail von localhost an ein normales E-Mail-Konto wie gmail zu senden? Muss ich einen Mailserver installieren? Ich habe gerade eine Standard-Schieneninstallation für die Entwicklung.E-Mail senden von localhost

Antwort

14

Sie können Action einrichten Google Mail-SMTP-Server mit so etwas wie dies in config/environment.rb verwenden:

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.server_settings = { 
    :address  => 'smtp.gmail.com', 
    :domain   => '<your domain>', 
    :port   => 587, 
    :user_name  => '<your gmail>', 
    :password  => '<your password>', 
    :authentication => :plain 
} 

bearbeiten: Wenn Sie irgendwelche Probleme auftreten, setzen Sie Ihre Konfigurationsfehler angezeigt werden :

ActionMailer::Base.raise_delivery_errors = true 
+0

Dank, so dass, wenn ich versuche, eine E-Mail von localhost zu einem regulären Postfach (nicht den Absender eines reguläres E-Mail-Konto wie gmail macht) zu senden, wie gmail was gebe ich in die Domains:, user_name,: password und: authentication fields? – conspirisi

+0

Dies ist nur das Setup, für das der Mail-Server verwendet werden soll. Die Absenderadresse, Adresse, Betreff usw. werden an anderer Stelle geändert. Sehen Sie sich die Beispiele in der Dokumentation zu ActionMailer (http://api.rubyonrails.org/classes/ActionMailer/Base.html) an, um dies zu tun. –

+0

für Google Mail: enable_starttls_auto: true manchmal möglicherweise – Artur79

0

Sie können es von localhost senden, können Sie auch den Absender als ‚echte‘ Postfach zB gesetzt [email protected]

Allerdings akzeptieren einige (oder sagen die meisten) Server diese Mail nicht als Teil ihrer spam blocking strategy (Unfähigkeit, die Absenderidentität zu überprüfen). In der Vergangenheit hatte ich jedoch etwas ähnliches mit Python, das auf Google Mail funktioniert.

so viel Glück ;-)

5

Werfen Sie einen Blick auf ActionMailer. In RAILS_ROOT/config/environment/ gibt es eine Datei für unterschiedliche Umgebungen (Entwicklung, Test, Produktion) gehen die konfigurierbaren Einstellungen in diesen Dateien

Sie die delivery_method wie folgt angeben,

ActionMailer::Base.delivery_method = :sendmail 

oder wenn Sie wollen

ActionMailer::Base.delivery_method = :smtp 

Ein ausführliches Beispiel der Einstellungen wurde von Mikael S

HTH

gebucht
3

Wenn ich Ihre Situation richtig verstanden habe, möchten Sie eine E-Mail von Ihrem lokalen Computer mit einer benutzerdefinierten E-Mail-Adresse wie [email protected] senden. Wenn Sie bereits den Domainnamen für Ihr E-Mail-Konto (mycompany.com) registriert haben, ist es sehr wahrscheinlich, dass das Unternehmen, das Ihre Website hostet, auch einen POP/SMTP-Server besitzt. Wenn dies der Fall ist, können Sie das Beispiel von Mikael S verwenden und den Adressparameter in die SMTP-Adresse Ihres Hosting-Unternehmens ändern und den Benutzernamen/das Passwort Ihres Hosting-Unternehmens verwenden.

Wenn Sie Ihre benutzerdefinierte Domain nicht registriert haben oder keinen Hosting-Provider haben, können Sie einen kostenlosen E-Mail-Server auf Ihrem lokalen Computer installieren. Wenn Sie WindowsXP verwenden, können Sie den IIS-E-Mail-Server hinzufügen, indem Sie Programme hinzufügen/entfernen -> Windows-Funktionen. Wenn Sie Linux verwenden, können Sie einen der in den Repositorys verfügbaren E-Mail-Server verwenden. Sobald Sie Ihren lokalen E-Mail-Server installiert haben, verwenden Sie den Beispielcode von Mikael S und verwenden 127.0.0.1 oder localhost im Adressfeld. Wenn Sie den E-Mail-Server von WindowsXP verwenden, müssen Sie Benutzername/Passwort nicht eingeben.

Ich hoffe, es hilft Ihnen.

25

Update für Schienen 4.0
Nun müssen Sie diesen Code, damit es funktioniert:

# I recommend using this line to show error 
config.action_mailer.raise_delivery_errors = true 

ActionMailer::Base.smtp_settings = { 
    :address  => 'smtp.gmail.com', 
    :domain   => 'mail.google.com', 
    :port   => 587, 
    :user_name  => '[email protected]', 
    :password  => '******', 
    :authentication => :plain, 
    :enable_starttls_auto => true 
} 
+2

Und vergessen Sie nicht, Ihren Rails-Server neu zu starten –