Ruby On Railsでメールを送るには「ActionMailer」というものを使うそうです。
以下のようにクラスを作成します。クラス名はわかりやすくXXXMailerとすると良さそうです。
rails g mailer InquiryMailer
SMTPサーバの設定
config/environments/development.rb
メールサーバーの設定を行います。
config.action_mailer.default_url_options = { :host => "localhost", :port => 3000 } config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :domain => 'smtp.gmail.com', :user_name => "メールアドレス", :password => "パスワード", :authentication => 'plain', :enable_starttls_auto => true, }
メール送信の設定
app/mailers/inquiry_mailer.rb
class InquiryMailer < ApplicationMailer def inquiry_email(inquiry) @inquiry = inquiry mail to: inquiry.email, subject: "お問い合わせありがとうございます", bcc: "sample@example.com" end end
@XXXでテンプレートに変数を渡せるようです。
メールテンプレート
app/views/inquiry_mailer/inquiry_email.text.erb
以下のように設定してみました。htmlメールとプレーンメールの振り分けルールはよくわかりません。
以下の内容でお問い合わせを受け付けました。 氏名:<%= @inquiry.name %> 郵便番号:<%= @inquiry.zip %> 都道府県:<%= @inquiry.prefecture %> 住所:<%= @inquiry.address1 %> <%= @inquiry.address2 %> メールアドレス:<%= @inquiry.email %> お問い合せ内容:<%= @inquiry.content %> 問い合わせ日時:<%= @inquiry.created_at %>
メール送信処理の呼び出し
今回はお問い合わせの登録が完了したらメールを送信したいので、
app/controllers/inquiries_controller.rb
のcreateに追加をします
respond_to do |format| if @inquiry.save InquiryMailer.inquiry_email(@inquiry).deliver format.html { redirect_to @inquiry, notice: 'Inquiry was successfully created.' } format.json { render :show, status: :created, location: @inquiry } else
成果物
https://github.com/YoshiteruIwasaki/banana-mail/commit/e771a553eb0c982ac3a20ac2681018f41a4867a0?diff=unified