Pony, the express way to send email in Ruby
Overview
Ruby no longer has to be jealous of PHP’s mail() function, which can send an email in a single command.
Pony.mail(:to => '[email protected]', :from => '[email protected]', :subject => 'hi', :body => 'Hello there.')
Any option key may be omitted except for :to.
Transport
Pony uses /usr/sbin/sendmail to send mail if it is available, otherwise it uses SMTP to localhost.
This can be over-ridden if you specify a via option
Pony.mail(:to => '[email protected]', :via => :smtp) # sends via SMTP
Pony.mail(:to => '[email protected]', :via => :sendmail) # sends via sendmail
You can also specify options for SMTP:
Pony.mail(:to => '[email protected]', :via => :smtp, :smtp => {
:host => 'smtp.yourserver.com',
:port => '25',
:user => 'user',
:pass => 'pass',
:auth => :plain # :plain, :login, :cram_md5, no auth by default
:domain => "localhost.localdomain" # the HELO domain provided by the client to the server
}
TLS/SSL
With smtp transport it also possible to use TLS/SSL:
Pony.mail(:to => '[email protected]', :via => :smtp, :smtp => {
:host => 'smtp.gmail.com',
:port => '587',
:tls => true,
:user => 'user',
:pass => 'pass',
:auth => :plain # :plain, :login, :cram_md5, no auth by default
:domain => "localhost.localdomain" # the HELO domain provided by the client to the server
})
Attachments
You can attach a file or two with the :attachments option:
Pony.mail(..., :attachments => {"foo.zip" => File.read("path/to/foo.zip"), "hello.txt" => "hello!"})
Meta
Written by Adam Wiggins
Patches contributed by: Mathieu Martin, Arun Thampi, Thomas Hurst, Stephen Celis, Othmane Benkirane, and Neil Mock
Released under the MIT License: www.opensource.org/licenses/mit-license.php