Sha256: 73817c112083671c0b9d00d3f900fb6eb4098d385508d2d03b1be4964c2aa63a

Contents?: true

Size: 1.72 KB

Versions: 1

Compression:

Stored size: 1.72 KB

Contents

module RequestLogAnalyzer

  # Mail report to a specified emailaddress
  class Mailer

    attr_accessor :data, :to, :host

    # Initialize a mailer
    # <tt>to</tt> to email address to mail to
    # <tt>host</tt> the mailer host (defaults to localhost)
    # <tt>options</tt> Specific style options
    #
    # Options
    # * <tt>:debug</tt> Do not actually mail
    # * <tt>:from_alias</tt> The from alias
    # * <tt>:to_alias</tt> The to alias
    # * <tt>:subject</tt> The message subject
    def initialize(to, host = 'localhost', options = {})
      require 'net/smtp'
      @to      = to
      @host    = host
      @options = options
      @data    = []
    end

    # Send all data in @data to the email address used during initialization.
    # Returns array containg [message_data, from_email_address, to_email_address] of sent email.
    def mail
      from          = @options[:from]        || 'contact@railsdoctors.com'
      from_alias    = @options[:from_alias]  || 'Request-log-analyzer reporter'
      to_alias      = @options[:to_alias]    || to
      subject       = @options[:subject]     || "Request log analyzer report - generated on #{Time.now.to_s}"
      content_type  = ""
      content_type  = 'Content-Type: text/html; charset="ISO-8859-1";' if @data.map{|l| l.include?('html')}.include?(true)
    msg = <<END_OF_MESSAGE
From: #{from_alias} <#{from}>
To: #{to_alias} <#{@to}>
Subject: #{subject}
#{content_type}

#{@data.to_s}
END_OF_MESSAGE

      unless @options[:debug]
        Net::SMTP.start(@host) do |smtp|
          smtp.send_message msg, from, to
        end
      end

      return [msg, from, to] 
    end

    def << string
      data << string
    end

    def puts string
      data << string
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
request-log-analyzer-1.4.2 lib/request_log_analyzer/mailer.rb