2

メールの送信に使用するアプリを作成しています。メールの生成に使用されるデータを受信するだけなので、通常のメーラーやビューテンプレートを使用する必要はありません。ActionMailerただし、直接対話する代わりに使用することにはいくつかの利点があると思いSMTPます。の新しいインスタンスをインスタンス化しようとしたときに問題が発生しましたActionMailer::BaseActionMailer拡張する新しいクラスを定義せずに、どうすれば単独で使用できActionMailer::Baseますか?

4

3 に答える 3

7

ActionMailerの基本的な機能は、 mailgemによって提供されます。これにより、非常に簡単にメールを送信できます。例:

Mail.deliver do
  from     'me@test.lindsaar.net'
  to       'you@test.lindsaar.net'
  subject  'Here is the image you wanted'
  body     File.read('body.txt')
  add_file :filename => 'somefile.png', :content => File.read('/somefile.png')
end

ActionMailerと同じ方法で配信をサポートします。

于 2012-05-13T11:59:41.530 に答える
2

これは最も基本的なソリューションです。SMTP設定とハードコードされた値を変数などに変更する必要があります。この方法では、ビューを使用する必要はありません。それでもERBを使用したい場合は、Railscast206をチェックすることをお勧めします。

このコードを変更し、「test_email.rb」のようなファイルに入れて、次のコマンドで呼び出します。ruby test_email.rb

require 'action_mailer'

ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "gmail.com",
  :user_name            => "testuser123",
  :password             => "secret",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

class TestMailer < ActionMailer::Base
  default :from => "testuser123@gmail.com"

  # def somemethod()
  #   mail(:to => "John Doe <john@example.com>", :subject => "TEST", :body => "HERE WE GO!!!")
  # end

  def mail(args)
    super
  end
end

# TestMailer.somemethod().deliver
TestMailer.mail(:to => "John Doe <john@example.com>", :subject => "TEST", :body => "HERE WE GO!!!")
于 2012-05-09T19:39:01.500 に答える
2

ああ、今はもっとよく理解できたと思います。基本的に、phpのmail()に似たシンプルなワンライナーを探していますよね?

もしそうなら、ActionMailerは本当にこの仕事に適したツールではないので、あなたには意味がありません。

あなたの勝者はポニーと呼ばれるルビーの宝石だと思います: https ://github.com/benprew/pony

例:

Pony.mail(:to => 'you@example.com', :from => 'me@example.com', :subject => 'hi', :body => 'Hello there.')
于 2012-05-10T14:18:28.977 に答える