README.md in postmark-rails-0.18.0 vs README.md in postmark-rails-0.19.0
- old
+ new
@@ -1,20 +1,43 @@
-# postmark-rails gem
+<a href="https://postmarkapp.com">
+ <img src="postmark.png" alt="Postmark Logo" title="Postmark" width="120" height="120" align="right">
+</a>
+# Postmark Rails Gem
+
[![Build Status](https://travis-ci.org/wildbit/postmark-rails.svg?branch=master)](https://travis-ci.org/wildbit/postmark-rails) [![Code Climate](https://codeclimate.com/github/wildbit/postmark-rails/badges/gpa.svg)](https://codeclimate.com/github/wildbit/postmark-rails)
+[![License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://www.opensource.org/licenses/MIT)
+[![Gem Version](https://badge.fury.io/rb/postmark-rails.svg)](https://badge.fury.io/rb/postmark-rails)
-The Postmark Rails Gem is a drop-in plug-in for ActionMailer to send emails via [Postmark](https://postmarkapp.com), an email delivery service for web apps. The gem has been created for fast implementation and fully supports all of [Postmark’s features](https://postmarkapp.com/why).
+[Postmark](https://postmarkapp.com) allows you to send your emails with high delivery rates.
+It also includes detailed statistics. In addition, Postmark can parse incoming emails which are forwarded back to your application.
-## Supported Rails Versions
+The Postmark Rails Gem is a drop-in plug-in for ActionMailer to send emails via [Postmark](https://postmarkapp.com).
+The gem has been created for fast implementation and fully supports all of [Postmark’s features](https://postmarkapp.com/why).
+## Usage
+
+Please see the [wiki](https://github.com/wildbit/postmark-rails/wiki) for detailed instructions about library features.
+For details about Postmark API in general, please check out [Postmark developer docs](https://postmarkapp.com/developer).
+
+## Requirements
+
+You will need a Postmark account, server and sender signature (or verified domain) set up to use it.
+For details about setup, check out [wiki pages](https://github.com/wildbit/postmark-rails/wiki/Getting-Started).
+
+Also you will need a [postmark gem](https://github.com/wildbit/postmark-gem) version 1.0 and higher is required.
+
+### Supported Rails Versions
+
* Rails 5.0
* Rails 4.x
* Rails 3.x
-For Rails 2.3 please take a look at [version 0.4](https://github.com/wildbit/postmark-rails/tree/v0.4.2). It may miss some new features, but receives all required bug fixes and other support if needed.
+For Rails 2.3 please take a look at [version 0.4](https://github.com/wildbit/postmark-rails/tree/v0.4.2).
+It may miss some new features, but receives all required bug fixes and other support if needed.
-## Configuring your Rails application
+## Installation
Add `postmark-rails` to your Gemfile and run `bundle install`.
``` ruby
gem 'postmark-rails'
@@ -33,210 +56,19 @@
config.action_mailer.postmark_settings = { :api_token => Rails.application.secrets.postmark_api_token }
```
**Note**: The `postmark_settings` hash can contain [any options](https://github.com/wildbit/postmark-gem#communicating-with-the-api) supported by `Postmark::ApiClient`.
-## Tracking opens and tagging your deliveries
-You can use tags to categorize outgoing messages and attach application-specific information. Tagging the different types of email that you send lets you [review statistics and bounce reports separately](http://developer.postmarkapp.com/developer-build.html#message-format).
+### Additional information
-Pass `:track_opens => 'true'` to enable/disable open tracking on per-message basis. Check out the [Triggers API](https://github.com/wildbit/postmark-gem/wiki/The-Triggers-API-Support) to see how Postmark can help you control this with tags. **Note that we pass a string here, since it becomes a header value. Passing a boolean may or may not work depending on your Rails version.**
+Looking for the advanced usage examples? Check out [the documentation](https://github.com/wildbit/postmark-gem/blob/master/README.md) for the [postmark gem](https://github.com/wildbit/postmark-gem).
+The `postmark-rails` gem is built on top of it, so you can benefit from all it's features.
-``` ruby
-class TestMailer < ActionMailer::Base
-
- def tagged_message
- mail(
- :subject => 'hello',
- :to => 'sheldon@bigbangtheory.com',
- :from => 'leonard@bigbangtheory.com',
- :tag => 'my-tag',
- :track_opens => 'true'
- )
- end
-
-end
-```
-
-## Sending attachments
-
-You can also send file attachments with Postmark. Read our Developer docs for [additional information](http://developer.postmarkapp.com/developer-build.html#attachments).
-
-The Postmark gem is compatible with [ActionMailer attachments API](http://api.rubyonrails.org/classes/ActionMailer/Base.html#method-i-attachments). It allows you to specify the name, content-type and other attributes for your attachments.
-
-The legacy `:postmark_attachments` attribute is *no longer supported* on Rails 3.2.13 and above.
-
-``` ruby
-class TestMailer < ActionMailer::Base
-
- def message_with_attachment
- attachments.inline['logo.png'] = File.read("/path/to/image") # Inline image
- attachments['42.jpg'] = File.read("/path/to/file") # Attached file
- mail(
- :subject => 'hello',
- :to => 'sheldon@bigbangtheory.com',
- :from => 'leonard@bigbangtheory.com'
- )
- end
-
-end
-```
-
-## Attaching metadata to messages
-
-Postmark supports [attaching metadata to messages](https://postmarkapp.com/support/article/1125-custom-metadata-faq-1). All metadata field values will be interpreted and returned in webhook payloads as strings.
-
-``` ruby
-class TestMailer < ActionMailer::Base
-
- def message_with_metadata
- metadata['foo'] = 'bar'
- mail(
- :subject => 'meta hello',
- :to => 'sheldon@bigbangtheory.com',
- :from => 'leonard@bigbangtheory.com'
- )
- end
-
-end
-```
-
-## Sending in batches
-
-While Postmark is focused on transactional email, we understand that developers
-with higher volumes or processing time constraints need to send their messages
-in batches. To facilitate this we provide a batching endpoint that permits you
-to send up to 500 well-formed Postmark messages in a single API call.
-
-``` ruby
-client = Postmark::ApiClient.new('your-api-token')
-
-messages = []
-messages << DigestMailer.weekly_digest(@user1)
-messages << DigestMailer.weekly_digest(@user2)
-
-client.deliver_messages(messages)
-
-messages.first.delivered?
-# => true
-
-messages.all?(&:delivered)
-# => true
-```
-
-## Error handling
-
-The gem respects the `ActionMailer::Base.raise_delivery_errors` setting and will surpress any exceptions
-if it’s set to `false`. When delivery errors are enabled, the gem can raise any one of the exceptions
-listed in the [postmark](https://github.com/wildbit/postmark-gem#error-handling) gem docs.
-
-
-### ActionMailer 5
-
-For ActionMailer 5 and above, use `ActionMailer::Base.rescue_from` to define handlers for
-each error you care about.
-
-#### Example
-
-``` ruby
-class ApplicationMailer < ActionMailer::Base
- default from: 'user@example.org'
- layout 'mailer'
-
- rescue_from Postmark::InactiveRecipientError, with: :reactivate_and_retry
-
- private
-
- def postmark_client
- ::Postmark::ApiClient.new(ActionMailer::Base.postmark_settings[:api_token],
- ActionMailer::Base.postmark_settings.except(:api_token))
- end
-
-
- # This is just an example. Sometimes you might not want to reactivate
- # an address that hard bounced.
- # Warning: Having too many bounces can affect your delivery reputation
- # with email providers
- def reactivate_and_retry(error)
- Rails.logger.info("Error when sending #{message} to #{error.recipients.join(', ')}")
- Rails.logger.info(error)
-
- error.recipients.each do |recipient|
- bounce = postmark_client.bounces(emailFilter: recipient).first
- next unless bounce
- postmark_client.activate_bounce(bounce[:id])
- end
-
- # Try again immediately
- message.deliver
- end
-end
-```
-
-### ActionMailer 4 and below
-
-Wrap any calls to `#deliver_now` in error handlers like the one described
-in the [postmark](https://github.com/wildbit/postmark-gem#error-handling) gem
-docs.
-
-Rails 4.2 introduces `#deliver_later` but doesn’t support `rescue_from` for
-mailer classes. Instead, use the following monkey patch for
-`ActionMailer::DeliveryJob`.
-
-``` ruby
-# app/mailers/application_mailer.rb
-
-class ApplicationMailer < ActionMailer::Base
- default from: 'user@example.org'
-end
-
-class ActionMailer::DeliveryJob
- rescue_from Postmark::InactiveRecipientError, with: :reactivate_and_retry
-
- def postmark_client
- ::Postmark::ApiClient.new(ActionMailer::Base.postmark_settings[:api_token],
- ActionMailer::Base.postmark_settings.except(:api_token))
- end
-
-
- # This is just an example. Sometimes you might not want to reactivate
- # an address that hard bounced.
- # Warning: Having too many bounces can affect your delivery reputation
- # with email providers
- def reactivate_and_retry(error)
- Rails.logger.info("Error when sending a message to #{error.recipients.join(', ')}")
- Rails.logger.info(error)
-
- error.recipients.each do |recipient|
- bounce = postmark_client.bounces(emailFilter: recipient).first
- next unless bounce
- postmark_client.activate_bounce(bounce[:id])
- end
-
- # Try again immediately
- perform(*arguments)
- end
-end
-```
-
-## Additional information
-
-Looking for the advanced usage examples? Check out [the documentation](https://github.com/wildbit/postmark-gem/blob/master/README.md) for the `postmark` gem. The `postmark-rails` gem is built on top of it, so you can benefit from all its features.
-
-## Requirements
-
-* `postmark` gem version 1.0 and higher is required.
-* You will also need a Postmark account, a server and at least one sender signature set up to use it. To get an account, [sign up](https://postmarkapp.com/sign_up)!
-
-
## Note on Patches/Pull Requests
-* Fork the project.
-* Make your feature addition or bug fix.
-* Add tests for it. This is important so we don’t break it in a future version unintentionally.
-* Commit, do not mess with rakefile, version, or history.
-* Send a pull request. Bonus points for topic branches.
+See [CONTRIBUTING.md](CONTRIBUTING.md) file for details.
## Authors & Contributors
* Artem Chistyakov
* Petyo Ivanov
@@ -245,8 +77,18 @@
* Randy Schmidt
* Chris Williams
* Nicolás Sanguinetti
* Laust Rud Jacobsen (rud)
+## Issues & Comments
+
+Feel free to contact us if you encounter any issues with the library or Postmark API.
+Please leave all comments, bugs, requests and issues on the Issues page.
+
+## License
+
+The Postmark Rails gem is licensed under the [MIT](http://www.opensource.org/licenses/mit-license.php) license.
+Refer to the [LICENSE](https://github.com/wildbit/postmark-rails/blob/master/LICENSE) file for more information.
+
## Copyright
-Copyright © 2010—2018 Wildbit LLC. See LICENSE for details.
+Copyright © 2018 Wildbit LLC.