mails_viewer 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -17,13 +17,50 @@ and enable assets pipeline by adding `config.assets.enabled = true` to config fi
17
17
 
18
18
  Add the gem to your Gemfile :
19
19
 
20
- gem "mails_viewer"
20
+ ```ruby
21
+ gem "mails_viewer"
22
+ ```
21
23
 
22
- put this in your routes.rb:
24
+ Set ActionMailer's delivery method to :file :
25
+
26
+ ```ruby
27
+ config.action_mailer.delivery_method = :file
28
+ ```
23
29
 
24
- mount MailsViewer::Engine => '/delivered_mails'
30
+ put this in your routes.rb:
25
31
 
26
- Now just load upt http://localhost:3000/delivered_mails
32
+ ```ruby
33
+ mount MailsViewer::Engine => '/delivered_mails'
34
+ ```
35
+
36
+ Now just load up http://localhost:3000/delivered_mails
37
+
38
+ ##### Advanced #####
39
+
40
+ You can choose to send out some mails to the inbox instead of just
41
+ storing them in the file system by specifying which mails to sent:
42
+
43
+ - `: send_if` - Send mails that satisfy some condition
44
+
45
+ ```ruby
46
+ config.action_mailer.delivery_method = :file
47
+ config.action_mailer.file_settings = {
48
+ location: 'tmp/mails',
49
+ smtp_settings: {
50
+ address: "localhost",
51
+ port: 25,
52
+ domain: 'localhost.localdomain',
53
+ user_name: nil,
54
+ password: nil,
55
+ authentication: nil,
56
+ enable_starttls_auto: true
57
+ },
58
+ send_if: lambda { |mail| mail.destinations.select { |address| ["yedingding@gmail.com"].include?(address) }.any?
59
+ }
60
+ ```
61
+
62
+ Now any mails sent to yedingding@gmail.com will not only store in the
63
+ filesystem for you to browse later, but also send out to his inbox.
27
64
 
28
65
  Credits
29
66
  -------
@@ -8,7 +8,7 @@ module MailsViewer
8
8
 
9
9
  # Enabling assets precompiling under rails 3.1
10
10
  if Rails.version >= '3.1' && Rails.env != 'production'
11
- initializer :assets do |app|
11
+ initializer "MailsViewer precompile hook", :group => :all do |app|
12
12
  app.config.assets.precompile += %w(mails_viewer.js mails_viewer.css)
13
13
  end
14
14
  end
@@ -1,15 +1,32 @@
1
1
  Mail::FileDelivery.class_eval do
2
- # We need to save the mail to seperate files when have several destination addresses
3
- # So we generate different file name and save them.
4
- def deliver!(mail)
5
- if ::File.respond_to?(:makedirs)
6
- ::File.makedirs settings[:location]
7
- else
8
- ::FileUtils.mkdir_p settings[:location]
9
- end
10
-
11
- mail.destinations.uniq.each do |to|
12
- ::File.open(::File.join(settings[:location], mail.filename_for(to)), 'w') { |f| "#{f.write(mail.encoded)}\r\n\r\n" }
13
- end
2
+ # We need to save the mail to seperate files when have several destination addresses
3
+ # So we generate different file name and save them.
4
+ def deliver!(mail)
5
+ if ::File.respond_to?(:makedirs)
6
+ ::File.makedirs settings[:location]
7
+ else
8
+ ::FileUtils.mkdir_p settings[:location]
14
9
  end
10
+
11
+ mail.destinations.uniq.each do |to|
12
+ ::File.open(::File.join(settings[:location], mail.filename_for(to)), 'w') { |f| "#{f.write(mail.encoded)}\r\n\r\n" }
13
+ end
14
+
15
+ if conditionally_sent(mail)
16
+ send(mail)
17
+ end
18
+ end
19
+
20
+ def conditionally_sent(mail)
21
+ if settings[:send_if] && settings[:smtp_settings]
22
+ settings[:send_if].call(mail)
23
+ end
24
+ rescue Exception => ex
25
+ false
26
+ end
27
+
28
+ def send(mail)
29
+ mail.delivery_method(:smtp, settings[:smtp_settings])
30
+ mail.deliver
31
+ end
15
32
  end
@@ -1,15 +1,9 @@
1
1
  module Mail
2
2
  class Message
3
-
4
- #def html_part
5
- #find_first_mime_type('text/html')
6
- #end
7
-
8
3
  # Save the mail to seperate files when have several destination addresses
9
4
  # This function used to return a filename by mail's date and destination address
10
5
  def filename_for(to)
11
6
  "#{date.to_time.to_i}.#{to}.txt"
12
7
  end
13
-
14
8
  end
15
9
  end
@@ -1,3 +1,3 @@
1
1
  module MailsViewer
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mails_viewer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-02 00:00:00.000000000 Z
13
+ date: 2012-09-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails