2012-03-01 4 views
10

すべての種類の設定を試しましたが、まだレールから開発環境でメールを送信できません。Rails 3メーラーが動作しておらず、エラーが記録されていない

私はコマンドラインからこれを試してみるためにmailutilsをインストールしました。それはうまくいきました。メールを受け取りました。メールには、件名[email protected]

を-sここに私の設定です:

class UserMailer < ActionMailer::Base 
    default :from => "[email protected]" 

    def test_email 
    Rails.logger.debug 'test_email' 
    mail(:to => '[email protected]', :subject => "testing rails") 
    end 
end 

コントローラ:

class PagesController < ApplicationController 
    def home 
    UserMailer.test_email 
    end 
end 

開発

# Don't care if the mailer can't send 
config.action_mailer.raise_delivery_errors = true # still no logs about emails 

config.action_mailer.delivery_method = :smtp 
config.action_mailer.perform_deliveries = true # I can't believe I have to add this option. Does it even exist? I found it on google. 
config.action_mailer.smtp_settings = { 
    :enable_starttls_auto => true, 
    :address => "smtp.gmail.com", 
    :port => 587, 
    :domain => "gmail.com", 
    :authentication => :login, 
    :user_name => "[email protected]", 
    :password => "abc123", 
} 

そして、ここでは、メーラーのコードです.log:

[2012-03-01 18:26:45.859] DEBUG [bb44dee806d73eb60ab3ae16297f5c02] [127.0.0.1] [GET] [http://myapp:3000/] test_email 
[2012-03-01 18:26:45.888] INFO [bb44dee806d73eb60ab3ae16297f5c02] [127.0.0.1] [GET] [http://myapp:3000/] Rendered user_mailer/test_email (1.6ms) 
[2012-03-01 18:26:45.898] INFO [bb44dee806d73eb60ab3ae16297f5c02] [127.0.0.1] [GET] [http://myapp:3000/] Rendered pages/home.html.erb within layouts/application (1.1ms) 
[2012-03-01 18:26:46.815] INFO [bb44dee806d73eb60ab3ae16297f5c02] [127.0.0.1] [GET] [http://myapp:3000/] Completed 200 OK in 455ms (Views: 112.4ms) 

私はまた、コンソールを使用してみました:

[email protected]:/srv/www/myapp# rails c 
Loading development environment (Rails 3.2.1) 
irb(main):001:0> UserMailer.test_email 
=> #<Mail::Message:32110400, Multipart: false, Headers: <To: [email protected]>, <Subject: testing rails>, <Mime-Version: 1.0>, <Content-Type: text/html>> 
+0

http://guides.rubyonrails.org/action_mailer_basics.htmlには、Gmail設定の例があります。認証属性に 'plain'を使用していますが、試してみましたか? – ismriv

+0

はい私はそれを試して何も起こっていない。ログがなければ、これは動作しません。要求の他のすべてが正しくログされます – HappyDeveloper

+0

メーラーを呼び出すコードはどのように見えますか? –

答えて

27
UserMailer.test_email 

だけMail::Messageオブジェクトを作成します。

ただ、ビッグバン方式の対応が存在することいじりで考え出し:実際にあなたが

+14

これは恥ずかしいです。ありがとう – HappyDeveloper

+0

Ow My God!私は3時間を過ごし、この方法を完全に忘れてしまった!ありがとう – 0bserver07

+1

レール5に関する注記:駆除警告: '#deliver'は廃止され、Rails 5で削除されます。'#deliver_now'を使用してください – jtlindsey

0

あなたはそれがあなたの設定だと思われる場合は、取り出してみてください:ドメインを。 (Net::SMTPAuthenticationError in rails 3.1.0.rc5 when connecting to gmail

しかし、私はmail機能では:bodyオプションが表示されません。多分それが問題です。レールコンソールから送信し、何が起こるかを見てください。 http://api.rubyonrails.org/classes/ActionMailer/Base.html#method-i-mail

+0

動作しませんでした。結果を表示するために投稿を更新しました。 – HappyDeveloper

9

については、ロギング・エラー(レール4.2 deliver_now/deliver_laterから始まるか)

UserMailer.test_email.deliver 

を行う必要があり、電子メールを送信するにはdeliver、例外をスローします。あなたのユーザー名やパスワードのスペルが間違っているかどうかをチェックしたり、誤った設定をしているかどうかを確認するのに非常に便利です。

UserMailer.test_email.deliver!

1

のRails 4.2の更新された答えは次のようになります。

UserMailer.test_email.deliver_now! 

感嘆マークは、エラーがある場合は例外を発生させることです。

+0

感嘆符には暗黙の緊急性も追加されています:) –

+0

' deliver_now! 'perform_deliveriesとraise_delivery_errorsをチェックせずに電子メールを配信しますので慎重に使用してください。 http://api.rubyonrails.org/v4.2/classes/ActionMailer/MessageDelivery.html#method-i-deliver_now-21 –