저는 최근에 ActionMailer
및 , SMTP
을 통해 이메일을 보낼 수 있도록 레일스 앱을 만들었습니다. 새 사용자가 생성되면 앱에서 사용자에게 이메일을 보냅니다. 모든 것이 성공했습니다.다른 앱에서 레일스 메일러 기능을 호출하려면 어떻게해야합니까?
이제 "메일러 응용 프로그램"을 웹 서비스로 어떻게 사용합니까? 다른 응용 프로그램에서 내 메일러 응용 프로그램에 전화를 걸면 추가 응용 프로그램에서 ActionMailer 코드를 모두 설정하지 않아도 전자 메일을 전달할 필요가 없습니다.
메일 응용 프로그램에서했던 것처럼 다른 응용 프로그램은 이름과 전자 메일을 사용하여 새 사용자를 등록하는 것처럼 간단 할 수 있습니다. 여기
내 코드입니다 :users_controller.rb
class UsersController < ApplicationController
before_action :set_user, only: [:show, :edit, :update, :destroy]
# POST /users
# POST /users.json
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
ExampleMailer.sample_email(@user).deliver
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_user
@user = User.find(params[:id])
end
def user_params
params.require(:user).permit(:name, :email)
end
end
설정/ENV/development.rb
Rails.application.configure do
....
config.action_mailer.delivery_method = :smtp
# SMTP settings for gmail
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'gmail.com',
:user_name => ENV['gmail_username'],
:password => ENV['gmail_password'],
:authentication => "plain",
:enable_starttls_auto => true
}
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
end
sample_email.html.erb
<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
<h1>Hi <%= @user.name %></h1>
<p>
Sample mail sent using smtp.
</p>
</body>
</html>
example.mailer.rb
class ExampleMailer < ApplicationMailer
default from: "[email protected]@@@@@@gmail.com"
def sample_email(user)
@user = user
mail(to: @user.email, subject: 'Sample Email')
end
end
감사합니다. 나는 내가 배우고 성취하려고 노력하는 것이 조금 과잉이라고 생각한다. 아마도 Mailer App을 호출하고 새로운 응용 프로그램의 @name 및 @email 변수를 사용하여 전자 메일을 전달하기 위해 'HTTParty'와 같은 것을 사용하는 방법을 찾고있었습니다. – Twdeveloper