Module: Ramaze::Helper::Email

Includes:
Innate::Optioned
Defined in:
lib/ramaze/helper/email.rb

Overview

The Email helper can be used as a simple way of sending Emails from your application. In order to use this helper you first need to load it:

 class Comments < Ramaze::Controller
   helper :email
 end

Sending an Email can be done by calling the method send_email():

 send_email('info@yorickpeterse.com', 'Hello, world!', 'Hello, this is an Email')

Ramaze will log any errors in case the Email could not be sent so you don’t have to worry about this.

Options

This module can be configured using Innate::Optioned. Say you want to change the SMTP host you simply need to do the following:

 Ramaze::Helper::.options.host = 'mail.google.com'

Various other options are available, for a full list of these options run the following in an IRB session:

 puts Ramaze::Helper::.options

By default this helper uses \r\n for newlines, this can be changed as following:

 Ramaze::Helper::.options.newline = "\n"

It’s important that this setting matches the settings of your SMTP server as otherwise you (usually) won’t be able to send any Emails.

Author:

Since:

Instance Method Summary (collapse)

Instance Method Details

- (Object) send_email(recipient, subject, message)

Sends an Email over SMTP.

Examples:

send_email('info@yorickpeterse.com', 'Hello, world!', 'Hello, this is an Email')

Parameters:

  • recipient (String)

    The Email address to send the Email to.

  • subject (String)

    The subject of the Email.

  • message (String)

    The body of the Email

Author:

  • Yorick Peterse

  • Michael Fellinger

Since:

  • 16-06-2011



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/ramaze/helper/email.rb', line 76

def send_email(recipient, subject, message)
  sender  = .options.sender_full || "#{Email.options.sender} <#{Email.options.sender}>"
  subject = [.options.subject_prefix, subject].join(' ').strip
  id      = .options.generator.call

  # Generate the body of the Email
     = [
    "From: #{sender}", "To: <#{recipient}>", "Date: #{Time.now.rfc2822}",
    "Subject: #{subject}", "Message-Id: #{id}", '', message
  ].join(.options.newline)

  # Send the Email
   = []

  [:host, :port, :helo_domain, :username, :password, :auth_type].each do |k|
    .push(.options[k])
  end

  begin
    Net::SMTP.start(*) do |smtp|
      smtp.send_message(, .options.sender, [recipient, *.options.bcc])
      Ramaze::Log.info("Email sent to #{recipient} with subject \"#{subject}\"")
    end
  rescue => e
    Ramaze::Log.error("Failed to send an Email to #{recipient}: #{e.inspect}")
  end
end