下記のコードは、Sinatra+MailのGemでブラウザからメール送信を行うプログラムです。
(明らかに不要な部分は除いています)
現在の課題は、「フォームから送信した単語をメール本文中に反映させる」ことです。
下記はとりあえず課題を満たすことができた(=メールを送信し、本文に反映フォームからの単語を表示できた)コードです。
が、グローバル変数で無理矢理表示させているような気がしてスマートな値の受け渡しができないものかと考えています。
常識的な方法があればご教授頂ければと思います。
Ruby
1#form.rb 2 3require 'mail' 4require 'sinatra' 5 6post '/receiver' do 7 $email = params[:email] 8 erb :receiver 9end 10 11get '/send' do 12 mail_sending 13 erb :send 14end 15 16 17def mail_sending 18 options = { :address => "smtp.gmail.com", 19 :port => 587, 20 :domain => 'gmail.com', 21 :user_name => 'brabra@mail.com', 22 :password => 'fakepass', 23 :authentication => 'plain', 24 :enable_starttls_auto => true } 25 26 Mail.defaults do 27 delivery_method :smtp, options 28 end 29 30 mail = Mail.new do 31 from 'brabra@mail.com' 32 to 'brabra@mail.com' 33 subject 'sample' 34 body "sample mail said => #{$email}" 35 end 36 mail.deliver! 37end
erb
1 2<!--form.erb--> 3 4<form action="receiver" method="post"> 5 6 <div> 7 email:<input type="text" name="email" value="sample"> 8 </div> 9 10 <div> 11 <input type="submit" value="SEND"> 12 </div> 13 14 15</form> 16 17<!--receiver.erb--> 18 19<html> 20<head> 21 <meta charset="UTF-8"> 22</head> 23<body> 24 ここはReceiverです。今から<%= $email %>のメッセージを送ります。 25 <a href="/send">送信する</a> 26</body> 27</html> 28 29
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。