Module: AppEngine::Mail
- Defined in:
- lib/appengine-apis/mail.rb
Overview
App Engine applications can send email messages on behalf of the app’s administrators, and on behalf of users with Google Accounts. Apps use the Mail service to send email messages.
The Mail.send method sends an email message from the application. The From: address can be either the email address of a registered administrator (developer) of the application, or the current user if signed in with Google Accounts.
The following example sends an email message to the user as confirmation that the user created a new account with the application:
class SignupController < Merb::Controller
def confirm(self):
user_address = params[:email_address"]
confirmation_url = create_new_user_confirmation
sender_address = "[email protected]"
subject = "Confirm your registration"
body = <<EOM
Thank you for creating an account! Please confirm your email address by
clicking on the link below:
#{confirmation_url}
EOM
AppEngine::Mail.send(sender_address, user_address, subject, body)
end
end
Class Method Summary collapse
-
.convert_mail_exceptions ⇒ Object
:nodoc:.
-
.create_java_message(options) ⇒ Object
Creates a Java MailService.Message object.
-
.send(sender, to, subject, text, options = {}) ⇒ Object
Sends an email.
-
.send_to_admins(sender, subject, text, options = {}) ⇒ Object
Sends an email alert to all admins of an application.
-
.service ⇒ Object
:nodoc:.
-
.service=(service) ⇒ Object
:nodoc:.
Class Method Details
.convert_mail_exceptions ⇒ Object
:nodoc:
142 143 144 145 146 147 148 149 150 |
# File 'lib/appengine-apis/mail.rb', line 142 def convert_mail_exceptions # :nodoc: begin yield rescue java.lang.IllegalArgumentException => ex raise ArgumentError, ex. rescue java.io.IOException => ex raise IOError, ex. end end |
.create_java_message(options) ⇒ Object
Creates a Java MailService.Message object.
Supported options:
- :atttachments
-
Attachments to send with this message. Should be a Hash of => “data” or an Array of [[“filename”, “data”], …].
- :bcc
-
Must be a String or an Array of Strings if set.
- :cc
-
Must be a String or an Array of Strings if set.
- :html
-
The html body of the message. Must not be
nil
iftext
is nil. - :reply_to
-
Must be a valid email address if set.
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/appengine-apis/mail.rb', line 118 def () [:text_body] = .delete(:text) [:html_body] = .delete(:html) = [:attachments] if [:attachments] = .collect do |filename, data| MailService::Attachment.new(filename, data.to_java_bytes) end end [:to, :cc, :bcc].each do |key| value = [key] [key] = [value] if value.kind_of? String end = MailService::Message.new .each do |key, value| begin .send("set_#{key}", value) if value rescue NameError raise ArgumentError, "Invalid option #{key.inspect}." end end return end |
.send(sender, to, subject, text, options = {}) ⇒ Object
Sends an email.
The message will be delivered asynchronously, and delivery problems will result in a bounce to the specified sender.
Args:
- sender
-
The From: field of the email. Must correspond to the valid email address of one of the admins for this application, or to the email address of the currently logged-in user.
- to
-
Message recipient(s). Should be an email address, or an Array of email addresses.
- subject
-
Subject of the message.
- text
-
Plain text body of the message. To send an HTML only email, set
text
to nil and use the:html
option. - options
-
See #create_java_message for supported options.
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/appengine-apis/mail.rb', line 70 def send(sender, to, subject, text, ={}) = = { :sender => sender, :to => to || [], :subject => subject, :text => text } .merge!() = () convert_mail_exceptions { service.send() } end |
.send_to_admins(sender, subject, text, options = {}) ⇒ Object
Sends an email alert to all admins of an application.
The message will be delivered asynchronously, and delivery problems will result in a bounce to the admins.
Args:
- sender
-
The From: field of the email. Must correspond to the valid email address of one of the admins for this application, or to the email address of the currently logged-in user.
- subject
-
Subject of the message.
- text
-
Plain text body of the message. To send an HTML only email, set
text
to nil and use the:html
option. - options
-
See #create_java_message for supported options.
96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/appengine-apis/mail.rb', line 96 def send_to_admins(sender, subject, text, ={}) = = { :sender => sender, :subject => subject, :text => text } .merge!() = () convert_mail_exceptions { service.send_to_admins() } end |
.service ⇒ Object
:nodoc:
152 153 154 |
# File 'lib/appengine-apis/mail.rb', line 152 def service # :nodoc: @service ||= MailServiceFactory.mail_service end |
.service=(service) ⇒ Object
:nodoc:
156 157 158 |
# File 'lib/appengine-apis/mail.rb', line 156 def service=(service) # :nodoc: @service = service end |