Description
Preview email in the default browser instead of sending it. This means you do not need to set up email delivery in your development environment, and you no longer need to worry about accidentally sending a test email to someone else's address.
LetterOpener alternatives and similar gems
Based on the "Email" category.
Alternatively, view LetterOpener alternatives based on common mentions on social networks and blogs.
-
Truemail
๐ Configurable framework agnostic plain Ruby ๐จ email validator/verifier. Verify email via Regex, DNS, SMTP and even more. Be sure that email address valid and exists. -
Sup
A curses threads-with-tags style email client (mailing list: [email protected]) -
MailForm
Send e-mail straight from forms in Rails with I18n, validations, attachments and request information. -
roadie-rails
Making HTML emails comfortable for the Rails rockstars -
Markerb
Allows you to render multipart e-mails from a single template written in Markdown. -
ActionMailer Balancer
A Ruby gem to send your ActionMailer mail through one of several delivery methods, selected by weight. -
๐ญ Unsubscribe
Automatically unsubscribe from emails in Rails.
Collect and Analyze Billions of Data Points in Real Time
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of LetterOpener or a related project?
README
Letter Opener 
Preview email in the default browser instead of sending it. This means you do not need to set up email delivery in your development environment, and you no longer need to worry about accidentally sending a test email to someone else's address.
Rails Setup
First add the gem to your development environment and run the bundle
command to install it.
gem "letter_opener", :group => :development
Then set the delivery method in config/environments/development.rb
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true
Now any email will pop up in your browser instead of being sent. The messages are stored in tmp/letter_opener
.
If you want to change application that will be used to open your emails you should override LAUNCHY_APPLICATION
environment variable or set Launchy.application
in the initializer.
Configuration
LetterOpener.configure do |config|
# To overrider the location for message storage.
# Default value is `tmp/letter_opener`
config.location = Rails.root.join('tmp', 'my_mails')
# To render only the message body, without any metadata or extra containers or styling.
# Default value is `:default` that renders styled message with showing useful metadata.
config.message_template = :light
end
For Rails 2.3.x support
There is a fork that add support for Rails 2.3.x, in order to use that or just check it out you should go to https://github.com/cavi21/letter_opener
Non Rails Setup
If you aren't using Rails, this can be easily set up with the Mail gem. Just set the delivery method when configuring Mail and specify a location.
require "letter_opener"
Mail.defaults do
delivery_method LetterOpener::DeliveryMethod, :location => File.expand_path('../tmp/letter_opener', __FILE__)
end
The method is similar if you're using the Pony gem:
require "letter_opener"
Pony.options = {
:via => LetterOpener::DeliveryMethod,
:via_options => {:location => File.expand_path('../tmp/letter_opener', __FILE__)}
}
Alternatively, if you are using ActionMailer directly (without Rails) you will need to add the delivery method.
require "letter_opener"
ActionMailer::Base.add_delivery_method :letter_opener, LetterOpener::DeliveryMethod, :location => File.expand_path('../tmp/letter_opener', __FILE__)
ActionMailer::Base.delivery_method = :letter_opener
Remote Alternatives
Letter Opener uses Launchy to open sent mail in the browser. This assumes the Ruby process is running on the local development machine. If you are using a separate staging server or VM this will not work. In that case consider using Mailtrap or MailCatcher.
If you are running your application within a Docker Container or VM and do not have a browser available to open emails received by Letter Opener, you may see the following error:
WARN: Launchy::CommandNotFoundError: Unable to find a browser command. If this is unexpected, Please rerun with environment variable LAUNCHY_DEBUG=true or the '-d' commandline option and file a bug at https://github.com/copiousfreetime/launchy/issues/new
To resolve this, simply set the following ENV variables:
LAUNCHY_DRY_RUN=true
BROWSER=/dev/null
In order to keep this project simple, I don't have plans to turn it into a Rails engine with an interface for browsing the sent mail but there is a gem you can use for that.
Development & Feedback
Questions or problems? Please use the issue tracker. If you would like to contribute to this project, fork this repository and run bundle
and rake
to run the tests. Pull requests appreciated.
Special thanks to the mail_view gem for inspiring this project and for their mail template. Also thanks to Vasiliy Ermolovich for helping manage this project.