monkey-mailer 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.travis.yml +5 -0
- data/README.md +35 -7
- data/lib/monkey-mailer/adapters/mandrilapi.rb +1 -1
- data/lib/monkey-mailer/adapters/smtp.rb +1 -1
- data/lib/monkey-mailer/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjViOWIzNTk3ZGEyMWFhMTFhNTE5NTA2NTI4ZWE4MDNiMmQ4MDU5Yw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YTViODJjZjExZWRmMjM0YzljMjQwZThjYjZhZGNmOGEzMTRhZGNiYQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjkwNzJlODAzZDVhZWNlYjMxMzI2OWQ0OGE0MjA5NmRkNmVjYmVlMzgxMDk1
|
10
|
+
OTJhZWM0ZTk4MTNjZjRmMWE0MzM5Y2M1MDk2MTQxNTkwOTg1Y2VhNTk1MTMw
|
11
|
+
NjU3YjdiYmUzY2QzOWViMTNkYWYzMWY3NTU2YmY2OGRkMjVlYjk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YmUxYTg4MDRjZjM2MmUzMjIzZTZmYWE2NzY1MTg4OGM0OWMzZGMxYjM2ZmMy
|
14
|
+
YWM1NjFjNjU1NWZkY2FhODljZTY5NDg4MDBjMWNjMWU0YjI1MWQzYjA4OGM2
|
15
|
+
OWM3MTM2YjQyNTlmOTliNTNhMzAyODAxYzNjMjdmZWU3ZWMwMjE=
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,11 +1,18 @@
|
|
1
|
+
[](https://travis-ci.org/fsaravia/monkey-mailer)
|
2
|
+
[](https://codeclimate.com/github/fsaravia/monkey-mailer)
|
3
|
+
|
1
4
|
Monkey Mailer
|
2
5
|
======
|
3
6
|
|
4
7
|
## Description
|
5
|
-
Monkey Mailer is a gem that allows
|
6
|
-
Emails can be loaded from different data sources using
|
7
|
-
Once loaded, emails can be sent using either SMTP or [Mailchimp's Mandril API](http://mandrill.com/)
|
8
|
-
After setup, Monkey Mailer can be configured to run and process your emails in a infinite loop until you stop it, it uses the [fallen](https://github.com/inkel/fallen/) gem, to run as a daemon in your server
|
8
|
+
Monkey Mailer is a gem that allows building a service for handling an email queue, it supports priority (urgent, normal and low priorities) and is higly customizable.
|
9
|
+
Emails can be loaded from different data sources using `loader` plugins (See below), it uses priority to determine which mails will be sent as soon as they are queued and which mails can wait
|
10
|
+
Once loaded, emails can be sent using either SMTP or [Mailchimp's Mandril API](http://mandrill.com/), they are `adapters` and, as with `loaders`, MonkeyMailer can be easily extended to work with the email provider of your choice
|
11
|
+
After setup, Monkey Mailer can be configured to run and process your emails in a infinite loop until you stop it, it uses the [fallen](https://github.com/inkel/fallen/) gem, to run as a daemon in your server
|
12
|
+
The principle behind MonkeyMailer's functionality is simple, it runs an infinite loop, within that loop it asks the `adapter` for emails to send. And this is where priority becomes important:
|
13
|
+
* `Urgent` mails are loaded and sent on every iteration
|
14
|
+
* `Normal` and `Low` priority emails are loaded and sent after a certain number of iterations have passed
|
15
|
+
Also, in order to avoid problems with your email provider, all priorities have a quota, so if there are many urgent emails to send, MonkeyMailer will only load and send a certain number on each iteration
|
9
16
|
|
10
17
|
## Instalation
|
11
18
|
gem install monkey-mailer
|
@@ -28,10 +35,10 @@ Adapters are classes that send your emails using different providers. MonkeyMail
|
|
28
35
|
* `MonkeyMailer::Adapters::MandrilAPI`
|
29
36
|
* `MonkeyMailer::Adapters::Smtp`
|
30
37
|
|
31
|
-
Any adapter receives its settings by setting up MonkeyMailer.configuration.adapter_options, check out each
|
38
|
+
Any adapter receives its settings by setting up MonkeyMailer.configuration.adapter_options, check out each one for specific options
|
32
39
|
|
33
40
|
##Dummy loader and adapter
|
34
|
-
Test adapter and loader are provided within MonkeyMailer so you can play with them
|
41
|
+
Test adapter and loader are provided within MonkeyMailer so you can play with them:
|
35
42
|
|
36
43
|
* Dummy loader: `MonkeyMailer::Loaders::Dummy` # It generates random emails for adapters to consume
|
37
44
|
* Dummy adapter: `MonkeyMailer::Adapters::Dummy` # It just displays the email content on stdout
|
@@ -45,7 +52,7 @@ Test adapter and loader are provided within MonkeyMailer so you can play with th
|
|
45
52
|
extend MonkeyMailer
|
46
53
|
|
47
54
|
MonkeyMailer.configure do |config|
|
48
|
-
config.adapter = MonkeyMailer::Adapters::MandrilAPI
|
55
|
+
config.adapter = MonkeyMailer::Adapters::MandrilAPI # Method used to send emails
|
49
56
|
config.adapter_options = {:mandril_api_key => 'YOUR_API_KEY'}
|
50
57
|
config.loader = MonkeyMailer::Loaders::DataMapper #Uses the loader on mm-data_mapper gem to load emails from a database
|
51
58
|
config.loader_options = {
|
@@ -95,6 +102,27 @@ You can also build your own loader gem, we have thought of some ideas about load
|
|
95
102
|
* mm-redis
|
96
103
|
* mm-your-storage-of-choice
|
97
104
|
|
105
|
+
## Building your own loader
|
106
|
+
It is painfully easy to write your own loader, just create a class inside `MonkeyMailer::Loaders` module and define this three methods:
|
107
|
+
```ruby
|
108
|
+
def initialize(opts)
|
109
|
+
# The content of MonkeyMailer.loader_options will be available on opts
|
110
|
+
end
|
111
|
+
|
112
|
+
def find_emails(priority, quota)
|
113
|
+
# Return an array of emails with the given priority with a limit of quota
|
114
|
+
end
|
115
|
+
|
116
|
+
def delete_email(end)
|
117
|
+
# Delete the email from your data storage, this method will only be called if email sent
|
118
|
+
# was successful
|
119
|
+
end
|
120
|
+
```
|
121
|
+
|
122
|
+
## List of known loaders:
|
123
|
+
|
124
|
+
* [mm-data_mapper](https://github.com/fsaravia/mm-data_mapper): Uses the DataMapper gem to load emails from a database
|
125
|
+
|
98
126
|
## License
|
99
127
|
See the `UNLICENSE` file included with this gem distribution.
|
100
128
|
|
@@ -44,7 +44,7 @@ module MonkeyMailer
|
|
44
44
|
@request[:message][:from_name] = email.from_name
|
45
45
|
@request[:message][:from_email] = email.from_email
|
46
46
|
@request[:message][:html] = email.body
|
47
|
-
@request[:message][:text] = email.body.gsub(/<\/?[^>]*>/, "")
|
47
|
+
@request[:message][:text] = email.body.gsub(/<\/?[^>]*>/, "") unless email.body.nil?
|
48
48
|
@request[:message][:subject] = email.subject
|
49
49
|
|
50
50
|
req = Net::HTTP::Post.new('/api/1.0/messages/send.json', initheader = {'Content-Type' =>'application/json'})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monkey-mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lautaro Orazi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-12-
|
12
|
+
date: 2013-12-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: clap
|
@@ -75,6 +75,7 @@ extensions: []
|
|
75
75
|
extra_rdoc_files: []
|
76
76
|
files:
|
77
77
|
- .gitignore
|
78
|
+
- .travis.yml
|
78
79
|
- Gemfile
|
79
80
|
- README.md
|
80
81
|
- UNLICENSE
|