Sha256: 1bbb7d2bceb6483bef308312df12359ec076996e2d8b3b5c6ca9c098e2f6d0b8

Contents?: true

Size: 1.81 KB

Versions: 25

Compression:

Stored size: 1.81 KB

Contents

# encoding: UTF-8
require 'mail'
require 'time'

module Vmail
  module ReplyTemplating

    def reply_template(replyall=false)
      @replyall = replyall
      log "Sending reply template"
      h = reply_headers
      body = h.delete('body')
      format_headers(h) + "\n\n\n" + body + signature
    end

    def reply_headers
      reply_subject = current_message.subject
      if reply_subject !~ /Re: /
        reply_subject = "Re: #{reply_subject}"
      end
      date = DateTime.parse(current_message.date)
      sender = current_message.sender
      reply_quote_header = date ? "On #{date.strftime('%a, %b %d, %Y at %I:%M %p')}, #{sender} wrote:\n\n" : "#{sender} wrote:\n"

      reply_body = reply_quote_header + 
        ( current_message.plaintext.split(/^-+$/,2)[1].strip.gsub(/^(?=>)/, ">").gsub(/^(?!>)/, "> ") )

      {
        'references' => current_message.message_id,
        'from' => "#@name <#@username>", 
        'to' => reply_recipient, 
        'cc' => reply_cc, 
        'bcc' => @always_bcc,
        'subject' => reply_subject, 
        'body' => reply_body
      }
    rescue
      $logger.debug $!
      raise
    end

    def reply_recipient
      current_mail.header['Reply-To'] || current_message.sender
    end

    def reply_cc
      return nil unless (@replyall || @always_cc)
      xs = if @replyall
             ((current_mail['cc'] && current_mail['cc'].decoded) || "") .split(/,\s*/)  + ((current_mail['to'] && current_mail['to'].decoded) || "") .split(/,\s*/)
           else
             []
           end
      xs = xs.select {|x|
        email = (x[/<([^>]+)>/, 1] || x) 
        email !~ /#{reply_recipient}/ && (@always_cc ? (email !~ /#{@always_cc}/) : true) 
      }
      if @always_cc 
        xs << @always_cc
      end
      xs.uniq.select {|x| x != reply_recipient }.join(', ')
    end

  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
vmail-2.5.7 lib/vmail/reply_templating.rb
vmail-2.5.6 lib/vmail/reply_templating.rb
vmail-2.5.5 lib/vmail/reply_templating.rb
vmail-2.5.4 lib/vmail/reply_templating.rb
vmail-2.5.3 lib/vmail/reply_templating.rb
vmail-2.5.2 lib/vmail/reply_templating.rb
vmail-2.5.1 lib/vmail/reply_templating.rb
vmail-2.5.0 lib/vmail/reply_templating.rb
vmail-2.4.9 lib/vmail/reply_templating.rb
vmail-2.4.8 lib/vmail/reply_templating.rb
vmail-2.4.7 lib/vmail/reply_templating.rb
vmail-2.4.6 lib/vmail/reply_templating.rb
vmail-2.4.5 lib/vmail/reply_templating.rb
vmail-2.4.4 lib/vmail/reply_templating.rb
vmail-2.4.3 lib/vmail/reply_templating.rb
vmail-2.4.2 lib/vmail/reply_templating.rb
vmail-2.4.1 lib/vmail/reply_templating.rb
vmail-2.4.0 lib/vmail/reply_templating.rb
vmail-2.3.9 lib/vmail/reply_templating.rb
vmail-2.3.8 lib/vmail/reply_templating.rb