diff -r cba9fb39bcdb -r a38e6916504c experiments/generate_email.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/experiments/generate_email.rb Fri May 12 11:09:36 2017 -0700 @@ -0,0 +1,76 @@ +#!/usr/bin/env ruby +# +# This script delivers a pile-o-test email to a local list. +# +# ** The list should first be configured to deliver to an additional +# Maildir. ** +# +# After an initial delivery run, you can generate test replies. +# + +require 'mail' +require 'faker' +require 'pathname' + +abort "Usage: #{$0} send \n" + + " #{$0} reply " if ARGV.size < 3 +mode, list, count = ARGV + +SENDERS = count.to_i.times.each_with_object( [] ) do |i, acc| + acc << "%s %s <%s>" % [ + Faker::Name.first_name, + Faker::Name.last_name, + Faker::Internet.safe_email + ] +end + +SUBJECTS = count.to_i.times.each_with_object( [] ) do |i, acc| + intro = if rand(3).zero? + "%s %s" % [ + [ 'Trying to', 'How do I', 'Help -' ].sample, + Faker::Hacker.verb + ] + else + Faker::Hacker.ingverb.capitalize + end + acc << "%s %s %s %s%s" % [ + intro, + ( rand(2).zero? ? Faker::Hacker.noun : Faker::Hacker.abbreviation ), + [ 'for a', 'on', 'on the', 'with some' ].sample, + Faker::Hacker.noun, + [ '?', '.', '?????'].sample + ] +end + +Mail.defaults { delivery_method :sendmail } + +case mode + when 'send' + until SENDERS.empty? + mail = Mail.new do + to list + from SENDERS.pop + subject SUBJECTS.pop + body Faker::Hacker.say_something_smart + end + mail.deliver + end + + when 'reply' + maildir = Pathname.new( list ) + 'new' + abort "%s doesn't exist." unless maildir.exist? + + count.to_i.times do + orig = Mail.read( maildir.children.sample.to_s ) + mail = Mail.new do + to orig.to + from SENDERS.sample + subject "Re: %s" % [ orig.subject ] + body Faker::Hacker.say_something_smart + in_reply_to "<%s>" % [ orig.message_id ] + references "<%s>" % [ orig.message_id ] + end + mail.deliver + end +end +