trikle-mail 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/trikle-mail +54 -1
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 56b56209a0710573c0e10588c9b66356d89083a9
4
- data.tar.gz: 4b869f8d5c346db9df95f556afd3ad499ec2af03
3
+ metadata.gz: 4ae726b20a132beb497b8bdbee1078af61dc4a0a
4
+ data.tar.gz: 4cf793465fcdd362ffa97162b721a80494b948ff
5
5
  SHA512:
6
- metadata.gz: cf18a54f6670acf233aec9b51b6e8ffd297d4cfc0eb49c71a27bddc67c1ab5b8bd75ec9693770e9d21d221d9c8347d8f20e8a3c08a645525fb5152ba9875f9df
7
- data.tar.gz: 3c4a3fa85e7430925ca8cd3ece6a75a1550a9e930c75a4eeb5352f88d3f299508a0654a401cc3f93ef1aa890d63746976cb98b41a46d25b8c3d63bbc376738ad
6
+ metadata.gz: 244dc76d34e37e445262421580dc2eb30c6cfe95243df9418bcb049722a5ea07c107112f029cdf575d73f47cc6545213c94791d63bd3d1b7dd7c8b5ecf9f46c0
7
+ data.tar.gz: dea0cd0f556f008ae175d68a3645fa88512cc5edd138df2ab84518f5f1320635d8f56eb4a9cc04869adfeb8a67a2027efeced4eccf4274e04a9009b1d31ecf6d
data/bin/trikle-mail CHANGED
@@ -2,16 +2,69 @@
2
2
  require 'commander'
3
3
  require 'mandrill'
4
4
  require 'csv'
5
+ require 'mail'
5
6
 
6
7
  class TrikleMail
7
8
  extend Commander::Methods
8
-
9
+
9
10
  program :name, 'Trikle Mail'
10
11
  program :version, '0.0.0'
11
12
  program :description, 'Send your bulk email in a trikle over the mandril api'
12
13
 
13
14
  default_command :run
14
15
 
16
+ command :smtp do |c|
17
+ c.syntax = 'trikle-mail smtp csv_of_emails.csv [options]'
18
+ c.description = 'Send a message to each email in the csv using the template'
19
+ c.option '--host STRING', String, 'The host of the mail server e.g. <mail.gmail.com>'
20
+ c.option '--port INTEGER', Integer, 'Port number of the mail server e.g. 587'
21
+ c.option '--username STRING', String, 'Username to authenticate with mail server'
22
+ c.option '--password STRING', String, 'Password to authenticate with mail server'
23
+ c.option '--from STRING', String, 'The email address to send the email from'
24
+ c.option '--template STRING', String, 'The template to use to send the message'
25
+ c.option '--subject STRING', String, 'The subject line of the message'
26
+ c.option '--hours INTEGER', Integer, 'The number of hours over which to send the emails'
27
+ c.option '--minutes INTEGER', Integer, 'The number of minutes over which to send the emails'
28
+
29
+ c.action do |args, options|
30
+ title_row, *data_rows = CSV.read(args[0])
31
+
32
+ data_hashes = data_rows.map do |row|
33
+ title_row.map.with_index do |title, index|
34
+ [title.downcase.to_sym, row[index]]
35
+ end.to_h
36
+ end
37
+
38
+ options.default({hours: 0, minutes: 0})
39
+ time_range = ((options.hours * 60 * 60) + (options.minutes * 60)) /
40
+ data_hashes.length.to_f
41
+
42
+ data_hashes.each do |hash|
43
+
44
+ mail = Mail.new do
45
+ from hash.fetch(:from, options.from)
46
+ to hash.fetch(:to, hash.fetch(:email) { raise 'no email address found in to column!' })
47
+ subject hash.fetch(:subject, options.subject)
48
+ body File.read(hash.fetch(:template, options.template)) % hash
49
+ end
50
+
51
+ mail.delivery_method :smtp, {
52
+ address: hash.fetch(:host, options.host),
53
+ port: hash.fetch(:port, options.port),
54
+ user_name: hash.fetch(:username, options.username),
55
+ password: hash.fetch(:password, options.password),
56
+ authentication: :login,
57
+ enable_starttls_auto: true
58
+ }
59
+
60
+ puts mail.deliver!
61
+ random_wait_time = rand(0..time_range)
62
+ puts "waiting #{random_wait_time} seconds"
63
+ sleep(random_wait_time)
64
+ end
65
+ end
66
+ end
67
+
15
68
  command :run do |c|
16
69
  c.syntax = 'trikle-mail csv_of_emails.csv [options]'
17
70
  c.description = 'Send a message to each email address in the csv'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trikle-mail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jasper Lyons