Module: AWS::SES::SendEmail

Included in:
Base
Defined in:
lib/aws/ses/send_email.rb

Overview

Adds functionality for send_email and send_raw_email Use the following to send an e-mail:

ses = AWS::SES::Base.new( ... connection info ... )
ses.send_email :to        => ['[email protected]', '[email protected]'],
             :source    => '"Steve Smith" <[email protected]>',
             :subject   => 'Subject Line'
             :text_body => 'Internal text body'

By default, the email “from” display address is whatever is before the @. To change the display from, use the format:

"Steve Smith" <[email protected]>

You can also send Mail objects using send_raw_email:

m = Mail.new( :to => ..., :from => ... )
ses.send_raw_email(m)

send_raw_email will also take a hash and pass it through Mail.new automatically as well.

Instance Method Summary collapse

Instance Method Details

#send_email(options = {}) ⇒ Response

Sends an email through SES

the destination parameters can be:

A single e-mail string

[email protected]

A array of e-mail addresses
[email protected]’, ‘[email protected]

“Email address is not verified.MessageRejected (AWS::Error)”

If you are receiving this message and you HAVE verified the [source] please check to be sure you are not in sandbox mode! If you have not been granted production access, you will have to verify all recipients as well. docs.amazonwebservices.com/ses/2010-12-01/DeveloperGuide/index.html?InitialSetup.Customer.html


Parameters:

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :source (String)

    Source e-mail (from)

  • :from (String)

    alias for :source

  • :to (String)

    Destination e-mails

  • :cc (String)

    Destination e-mails

  • :bcc (String)

    Destination e-mails

  • :subject (String)
  • :html_body (String)
  • :text_body (String)
  • :return_path (String)

    The email address to which bounce notifications are to be forwarded. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient’s ISP; this message will then be forwarded to the email address specified by the ReturnPath parameter.

  • :reply_to (String)

    The reploy-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.

  • (Object)

Returns:

  • (Response)

    the response to sending this e-mail



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/aws/ses/send_email.rb', line 52

def send_email(options = {})
  package     = {}

  package['Source'] = options[:source] || options[:from]

  add_array_to_hash!(package, 'Destination.ToAddresses', options[:to]) if options[:to]
  add_array_to_hash!(package, 'Destination.CcAddresses', options[:cc]) if options[:cc]
  add_array_to_hash!(package, 'Destination.BccAddresses', options[:bcc]) if options[:bcc]

  package['Message.Subject.Data'] = options[:subject]

  package['Message.Body.Html.Data'] = options[:html_body] if options[:html_body]
  package['Message.Body.Text.Data'] = options[:text_body] || options[:body] if options[:text_body] || options[:body]

  package['ReturnPath'] = options[:return_path] if options[:return_path]

  add_array_to_hash!(package, 'ReplyToAddresses', options[:reply_to]) if options[:reply_to]

  request('SendEmail', package)
end

#send_raw_email(mail, args = {}) ⇒ Response Also known as: deliver!, deliver

Sends using the SendRawEmail method This gives the most control and flexibility

This uses the underlying Mail object from the mail gem You can pass in a Mail object, a Hash of params that will be parsed by Mail.new, or just a string

Note that the params are different from send_email Specifically, the following fields from send_email will NOT work:

  • :source

  • :html_body

  • :text_body

send_email accepts the aliases of :from & :body in order to be more compatible with the Mail gem

This method is aliased as deliver and deliver! for compatibility (especially with Rails)

Parameters:

  • mail (Hash)

    a customizable set of options

  • args (Hash) (defaults to: {})

    a customizable set of options

Options Hash (mail):

  • A (String)

    raw string that is a properly formatted e-mail message

  • A (Hash)

    hash that will be parsed by Mail.new

  • A (Mail)

    mail object, ready to be encoded

Options Hash (args):

  • :source (String)

    The sender’s email address

  • :destinations (String)

    A list of destinations for the message.

  • :from (String)

    alias for :source

  • :to (String)

    alias for :destinations

Returns:

Raises:

  • (ArgumentError)


98
99
100
101
102
103
104
105
106
# File 'lib/aws/ses/send_email.rb', line 98

def send_raw_email(mail, args = {})
  message = mail.is_a?(Hash) ? Mail.new(mail) : mail
  raise ArgumentError, "Attachment provided without message body" if message.has_attachments? && message.text_part.nil? && message.html_part.nil?

  raw_email = build_raw_email(message, args)
  result = request('SendRawEmail', raw_email)
  message.message_id = "<#{result.parsed['SendRawEmailResult']['MessageId']}@#{message_id_domain}>"
  result
end