2016-07-07 2 views
0

저는 최근에 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 

답변

0

당신은 아마 microservices 아키텍처를 구상하고 있습니다. 거기에 많은 자원이 있는데, 한 예가 this blog post입니다. 간단히 말해, 기능 구성 요소를 분리 된 블록으로 이동할 때, 서로 통신 할 수있는 수단을 제공해야합니다. 가장 많은 인기를 얻고있는 HTTP API 또는 전용 메시지 중개자를 사용하는 방법은 다양합니다.

+0

감사합니다. 나는 내가 배우고 성취하려고 노력하는 것이 조금 과잉이라고 생각한다. 아마도 Mailer App을 호출하고 새로운 응용 프로그램의 @name 및 @email 변수를 사용하여 전자 메일을 전달하기 위해 'HTTParty'와 같은 것을 사용하는 방법을 찾고있었습니다. – Twdeveloper

관련 문제