메일 발송 기능 구현 — ActionMailer와 Gmail SMTP 연동하기

2025. 7. 24. 09:00·Ruby On Rails
728x90
반응형

사용자 회원가입, 주문 확인, 비밀번호 재설정… 모든 서비스에는 메일 발송 기능이 필요합니다.
Rails에서는 이를 위해 ActionMailer라는 전용 클래스가 제공되며, Gmail SMTP 서버를 이용하면 누구나 손쉽게 이메일을 전송할 수 있어요.

이번 글에서는 회원가입 확인 메일을 예시로 ActionMailer + Gmail SMTP 연동을 처음부터 끝까지 정리해볼게요.


📮 1. ActionMailer 클래스 생성

$ bin/rails generate mailer UserMailer

위 명령어를 실행하면 다음과 같은 파일이 생성됩니다:

  • app/mailers/user_mailer.rb
  • app/views/user_mailer/ (메일 템플릿 디렉토리)

✉️ 2. 메일 메서드 정의


# app/mailers/user_mailer.rb
class UserMailer < ApplicationMailer
  default from: "no-reply@example.com"

  def welcome_email(user)
    @user = user
    mail(to: @user.email, subject: "환영합니다! #{user.name}님 🎉")
  end
end

@user를 메일 템플릿에서 사용할 수 있게 넘겨줍니다.


🖋️ 3. 메일 템플릿 작성


# app/views/user_mailer/welcome_email.html.erb
<h1><%= @user.name %>님, 가입을 환영합니다! 🎉</h1>
<p>저희 서비스를 이용해 주셔서 감사합니다.</p>

또한, welcome_email.text.erb를 함께 작성하면 HTML을 지원하지 않는 클라이언트에도 대응할 수 있어요.


⚙️ 4. Gmail SMTP 설정

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:            ENV['GMAIL_USER'],
  password:             ENV['GMAIL_PASS'],
  authentication:       'plain',
  enable_starttls_auto: true
}

환경변수는 dotenv 또는 credentials.yml.enc에 저장하는 것이 안전합니다.

.env 예시


GMAIL_USER=your_email@gmail.com
GMAIL_PASS=your_gmail_app_password

> ⚠️ Gmail 보안 설정에서 앱 비밀번호를 생성해야 합니다. 2단계 인증을 활성화하고 앱 전용 비밀번호를 발급받으세요.


🧪 5. 메일 발송 테스트


# 콘솔에서 직접 테스트
user = User.first
UserMailer.welcome_email(user).deliver_now

메일이 정상적으로 발송되면 Gmail 수신함에서 확인할 수 있습니다!


📥 6. 실제 액션과 연동하기


# app/controllers/users_controller.rb
def create
  @user = User.new(user_params)
  if @user.save
    UserMailer.welcome_email(@user).deliver_later
    redirect_to @user, notice: "가입을 환영합니다! 확인 메일을 발송했습니다."
  else
    render :new
  end
end

deliver_now는 즉시 발송, deliver_later는 비동기 큐 처리입니다 (ActiveJob 필요).


🎯 마치며

메일 발송 기능은 사용자 경험의 완성도를 높이는 중요한 요소입니다.
Rails의 ActionMailer와 Gmail SMTP를 활용하면 복잡한 설정 없이도 깔끔하고 안전한 이메일 시스템을 만들 수 있어요.
이번 글을 기반으로 비밀번호 재설정, 문의 답변 등 다양한 상황에 활용해보세요!

728x90
반응형

'Ruby On Rails' 카테고리의 다른 글

Heroku로 Rails 앱 배포하기 — 빠르고 간단한 클라우드 배포  (2) 2025.07.31
Rails 앱 보안 점검 — CSRF, SQL Injection 막기  (2) 2025.07.29
댓글 기능 추가하기 — 모델 연관관계 완전 정복  (4) 2025.07.22
관리자 페이지 만들기 — RailsAdmin vs ActiveAdmin  (0) 2025.07.17
파일 업로드 구현 — ActiveStorage와 Cloudinary 활용하기  (1) 2025.07.15
'Ruby On Rails' 카테고리의 다른 글
  • Heroku로 Rails 앱 배포하기 — 빠르고 간단한 클라우드 배포
  • Rails 앱 보안 점검 — CSRF, SQL Injection 막기
  • 댓글 기능 추가하기 — 모델 연관관계 완전 정복
  • 관리자 페이지 만들기 — RailsAdmin vs ActiveAdmin
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails N
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    openweather
    북마크기능
    날씨앱
    flutter앱개발
    감성앱
    UIUX
    UI디자인
    정적사이트
    캘린더앱
    모바일앱개발
    다크모드
    Firebase
    fluttertips
    flutterui
    뉴스앱
    flutter상태관리
    ActiveRecord
    flutter게시판
    flutter기초
    메모앱
    코드를걷는사람
    Nextjs
    rails보안
    flutter개발
    개발블로그
    백엔드개발
    table_calendar
    Flutter
    flutter디자인
    RubyOnRails
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
메일 발송 기능 구현 — ActionMailer와 Gmail SMTP 연동하기
상단으로

티스토리툴바