컨설팅 테이블 작성
17901 단어 ActionMailerRails
투고한 내용은 G-mail로 보낼 수 있다.
이쪽 사이트를 참고하게 해 주세요.
https://remonote.jp/rails-confirm-form
https://qiita.com/annaaida/items/81d8a3f1b7ae3b52dc2b
2020/4/18
환경 변수 설정은dotenv에서credentials까지입니다.yml.enc로 변경되었습니다.
STEP1
먼저 라우팅 및 컨트롤러 작성
config/routes.rb
Rails.application.routes.draw do
get 'index' =>'messages#index'
post 'confirm' => 'messages#confirm'
post 'done' => 'messages#done'
end
단말기$ rails g controller messages
STEP2
다음은 컨트롤러입니다.
발리에서 걸리거나 복귀 버튼을 눌렀다는 기록도 있다.
app/controllers/messages_controller.rb
class MessagesController < ApplicationController
def index
@message = Message.new
end
def confirm
@message = Message.new(message_params)
if @message.valid?
render :action => 'confirm'
else
render :action => 'index'
end
end
def done
@message = Message.new(message_params)
if params[:back]
render :action => 'index'
else
MessageMailer.received_email(@message).deliver_now
render :action => 'done'
end
end
private
def message_params
params.require(:message).permit(:name, :email, :content)
end
end
STEP3
이제 뷰 작성을 시작합니다.
투고 화면
app/views/messages/index.html.erb
<%= form_for(@message, url: { action: :confirm }) do |f| %>
<div>
<h2>お問い合わせ</h2>
<% if @message.errors.present? %>
<div>
<strong>入力内容にエラーがあります</strong>
<ul>
<% @message.errors.each do |attr, error| %>
<li><%= error %></li>
<% end %>
</ul>
</div>
<% end %>
<div>
<strong>名前</strong>
<p><%= f.text_field :name, placeholder: '20文字以内' %></p>
</div>
<div>
<strong>メールアドレス</strong>
<p><%= f.text_field :email, placeholder: '30文字以内' %></p>
</div>
<div>
<strong>内容</strong>
<p><%= f.text_area :content, placeholder: '200文字以内' %></p>
</div>
<%= f.submit '確認画面へ' %>
</div>
<% end %>
내용 확인 화면app/views/messages/confirm.html.erb
<%= form_for @message, :url => done_path do |f| %>
<div>
<h2>内容確認</h2>
<div>
<strong>名前</strong>
<p>
<%= f.hidden_field :name %>
<%= @message.name %>
</p>
</div>
<div>
<strong>メールアドレス</strong>
<p>
<%= f.hidden_field :email %>
<%= @message.email %>
</p>
</div>
<div>
<strong>内容</strong>
<p>
<%= f.hidden_field :content %>
<%= simple_format(@message.content) %>
</p>
</div>
<%= f.submit '送信する' %>
<%= f.submit '戻る', name: 'back' %>
</div>
<% end %>
투고 완료 화면app/views/messages/done.html.erb
<div>
<h2>メッセージ送信完了</h2>
<p>
メッセージをいただきありがとうございました。
</p>
</div>
STEP4
모델 생성하기
이번에는 데이터베이스를 사용하지 않고 모델은 Active Model을 사용합니다.
app/models/message.rb
class Message include ActiveModel::Model
attr_accessor :name, :email, :content
validates :name, presence: true, length: { maximum: 20 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 30 },
format: { with: VALID_EMAIL_REGEX }
validates :content, presence: true, length: { maximum: 200 }
end
STEP5
환경 변수에서 메일 주소와 2단계 인증 비밀번호를 설정합니다.
아직 2급 인증 비밀번호를 발행하지 않은 사람은 아래의 글을 확인하세요.
참고 자료
https://www.howtonote.jp/google-account/2step-verify/index6.html
환경 변수는credentials입니다.yml.enc에서 설정되었습니다.
이 보도에 방법을 기재하였다.
https://qiita.com/shimpex/items/9e75863efc1808aad23d
STEP6
메르를 창건하다.
단말기
$ rails generate mailer MessageMailer
app/mailers/message_mailer.rb
class MessageMailer < ApplicationMailer
default to: Rails.application.credentials.g_mail[:g_mail] # 送信先アドレス
def received_email(message)
@message = message
mail(subject: 'webサイトよりメッセージが届きました') do |format|
format.text
end
end
end
받은 우편물의 내용을 기술하다.app/views/message_mailer/received_email.text.erb
<%= @message.name %>様からメッセージが届きました。
メールアドレス:<%= @message.email %>
内容:<%= @message.content %>
STEP7
메일 서버 설정
config/environments/development.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => Rails.application.credentials.g_mail[:g_mail], # 送信先アドレス
:password => Rails.application.credentials.g_mail[:g_pass], #2段階認証パスワード
:authentication => :plain,
:enable_starttls_auto => true
}
적용을 위해 rails를 다시 해주세요.이상의 상담 형식은 완료되었습니다.
그런 다음 필요에 따라 CSS에서 뷰를 조정합니다.
최후
환경 변수의 설정과 상담 형식의 제작에는 여러 가지 방법이 있기 때문에 어느 것이 우수한지 판단하기 어렵지만, 우선 상술한 방법으로 문의 형식의 투고와 메일을 받을 수 있다.
감사합니다.
Reference
이 문제에 관하여(컨설팅 테이블 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shimpex/items/0f9e9f9dfff648631c89텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)