0

ここの指示に従ってください: http://www.padrinorb.com/guides/padrino-mailer

app.rb ファイルに配信方法を追加しました。

class OscarAffiliate < Padrino::Application
  register Padrino::Rendering
  register Padrino::Mailer
  register Padrino::Helpers

  enable :sessions

  set :delivery_method, :smtp => { 
    :address              => "email-smtp.us-east-1.amazonaws.com",
    :port                 => 587,
    :user_name            => 'AKIAIQ5YXCWFKFXFFRZA',
    :password             => 'AqMNMFecKSYR/TRu8kJgocysAL5SmIUsu2i8u/KAfeF/',
    :authentication       => :plain,
    :enable_starttls_auto => true  
  }

しかし、Padrino を介した世代と Mailer 世代を介して、これが属するべき推奨される「セッション」コントローラーがありません。

post :create do
  email(:from => "tony@reyes.com", :to => "john@smith.com", :subject => "Welcome!",     :body=>"Body")
end

何か不足していますか?

オフィスでの基本的なデータ収集用のフォームがあり、メッセージ本文にすべてのフォーム フィールドを含むメールを 5 人の受信者に送信する必要があります。

ありがとう

4

1 に答える 1

1

フォームが送信された後、1 人 (または複数の人) にメールを送信しようとしているようです。そのフォームからデータベースに情報を保存している可能性があります。Padrino メーラーの使い方に少し混乱していると思います。明確にさせてください: Padrino のメーラー機能を使用して完全な本文のメールを送信するには、Padrino Mailer を作成する必要があります (これについては以下で概説しています)。次に、呼び出し時に変数を渡すことができるように、そのメーラーを構成する必要があります。これらの変数はビューで使用でき、メーラーはメールを送信する前にメール本文にレンダリングします。これは、やろうとしているように見えることを達成するための 1 つの方法であり、おそらく最も簡単です。この手順の詳細については、「メーラーの使用法」を参照してください。あなたはあなたの質問で提供しました。以下に、お客様のニーズに合わせて調整された使用例の概要を示します。


指示

このコード サンプルをまとめて、自分の AWS アカウントに対してテストしました。本番環境で動作するはずです。

ファイルに以下を含めますapp/app.rb(既に行っています)。

set :delivery_method, :smtp => { 
  :address              => 'email-smtp.us-east-1.amazonaws.com',
  :port                 => 587,
  :user_name            => 'SMTP_KEY_HERE',
  :password             => 'SMTP_SECRET_HERE',
  :authentication       => :plain,
  :enable_starttls_auto => true  
}

次に、でメーラーを作成しますapp/mailers/affiliate.rb

# Defines the mailer
DemoPadrinoMailer.mailer :affiliate do
  # Action in the mailer that sends the email. The "do" part passes the data you included in the call from your controller to your mailer.
  email :send_email do |name, email|
    # The from address coinciding with the registered/authorized from address used on SES
    from 'your-aws-sender-email@yoursite.com'
    # Send the email to this person
    to 'recipient-email@yoursite.com'
    # Subject of the email
    subject 'Affiliate email'
    # This passes the data you passed to the mailer into the view
    locals :name => name, :email => email
    # This is the view to use to redner the email, found at app/views/mailers/affiliate/send_email.erb
    render 'affiliate/send_email'
  end
end

アフィリエイト メーラーのsend_emailビューは次の場所にapp/view/mailers/affiliate/send_email.erbあり、次のように表示されます。

Name: <%= name %>
Email: <%= email %>

最後に、フォーム送信を受け入れるメソッド (およびコントローラー) の内部からメーラーを呼び出すことができます。文字列は必ず実際のフォーム データに置き換えてください。この例では、POSTedcreateアクションを使用しましたが、これはデータを保存しませんでした (したがって、偽のデータを含む文字列)。

post :create do
  # Deliver the email, pass the data in after everything else; here I pass in strings instead of something that was being saved to the database
  deliver(:affiliate , :send_email, "John Doe", "john.doe@example.com")
end

これがあなたの Padrino の旅に役立つことを心から願っています。Stack Overflow コミュニティへようこそ!

心から、

ロベルト・クルベンスピー

于 2012-05-24T01:15:54.163 に答える