class Mailmerge::Merger

Public Instance Methods

merge() click to toggle source
# File lib/mailmerge.rb, line 27
def merge
  if ARGV[0] == "-h"
    puts "usage: mailmerge [csv] [erb] [from_addr] [password]"
    exit
  end
  smtp = Net::SMTP.new 'smtp.gmail.com', 587
  smtp.enable_starttls
  arr_of_rows = CSV.read(ARGV[0])
  email_template = ARGV[1]
  headers = arr_of_rows[0]
  rows = arr_of_rows[1..]
  template_contents = File.read(ARGV[1])
  user_email = ARGV[2]
  user_password = ARGV[3]

  renderer = ERB.new(template_contents)
  rows.each do |row|
    td = TemplateData.new(headers, row, template_contents)
    rendered_email = td.result
    puts rendered_email
    smtp.start('gmail.com',
               user_email, user_password, :plain) do |smtp|
      smtp.send_message rendered_email,
                        user_email,
                        td.instance_variable_get("@to_email")
    end
    puts "-------------------------"
  end
end