Sha256: 72a7e62d573103f8fdced073f6a9108b610d2e2df7c3ad1541b1af9c43747468

Contents?: true

Size: 1.59 KB

Versions: 5

Compression:

Stored size: 1.59 KB

Contents

# -*- coding: utf-8 -*-
#
# Copyright 2013 whiteleaf. All rights reserved.
#

require "yaml"
require "singleton"
require_relative "narou"

class Mailer
  include Singleton

  SETTING_FILE = "mail_setting.yaml"

  class SettingNotFound < StandardError; end
  class SettingUncompleteError < StandardError; end

  attr_reader :error_message

  def self.create
    this = instance
    this.clear
    setting_file_path = File.join(Narou.get_root_dir, SETTING_FILE)
    if File.exist?(setting_file_path)
      options = YAML.load_file(setting_file_path)
      unless options.delete(:complete)
        raise SettingUncompleteError, "設定ファイルの書き換えが終了していないようです。\n" +
                                      "設定ファイルは #{setting_file_path} にあります"
      end
      this.options = options
    else
      raise SettingNotFound
    end
    this
  end

  def initialize
    @options = {}
    @error_message = ""
  end

  def clear
    @options.clear
  end

  def options=(options)
    @options.merge!(options)
  end

  def send(message, attached_file_path = nil)
    gem "mail", "2.5.4"
    require "pony"
    @error_message = ""
    params = @options.dup
    params[:body] = message
    params[:charset] = "UTF-8"
    params[:text_part_charset] = "UTF-8"
    if attached_file_path
      basename = File.basename(attached_file_path).tr("@", "@")
      params[:attachments] = { basename => File.binread(attached_file_path) }
    end
    begin
      Pony.mail(params)
    rescue StandardError => e
      @error_message = e.message
      return false
    end
    true
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
narou-3.0.4 lib/mailer.rb
narou-3.0.3 lib/mailer.rb
narou-3.0.2 lib/mailer.rb
narou-3.0.1 lib/mailer.rb
narou-3.0.0 lib/mailer.rb