class App42::Email::EmailService

This Service is used to send Emails. This service can be used by app to send mail to one or multiple recipients.

@see Email

Public Class Methods

new(api_key, secret_key, base_url) click to toggle source

this is a constructor that takes

@param apiKey @param secretKey @param baseURL

# File lib/email/EmailService.rb, line 28
def initialize(api_key, secret_key, base_url)
  puts "EmailService->initialize"
  @api_key = api_key
  @secret_key = secret_key
  @base_url = base_url
  @resource = "email"
  @version = "1.0"
end

Public Instance Methods

create_mail_configuration(emailHost, emailPort, mailId, emailPassword, isSSL) click to toggle source

Creates Email Configuration using which in future the App developer can send mail

@param emailHost

- Email Host to be used for sending mail

@param emailPort

- Email Port to be used for sending mail

@param mailId

- Email id to be used for sending mail

@param emailPassword

- Email Password to be used for sending mail

@param isSSL

- Should be send using SSL or not

@return Email object containing the email configuration which has been created

@raise App42Exception

# File lib/email/EmailService.rb, line 56
def create_mail_configuration(emailHost, emailPort, mailId, emailPassword, isSSL)
  puts "create Mail Configuration Called "
  puts "Base url #{@base_url}"
  response = nil;
  emailObj = nil;
  emailObj = Email.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(emailHost, "Host");
  util.throwExceptionIfNullOrBlank(emailPort, "Port");
  util.throwExceptionIfNullOrBlank(mailId, "Email Id");
  util.throwExceptionIfNullOrBlank(emailPassword, "Password");
  util.throwExceptionIfNullOrBlank(isSSL, "isSSL");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"email"=> {
      "host" => emailHost,
      "port" => emailPort,
      "emailId" => mailId,
      "password" => emailPassword,
      "ssl" => isSSL
      }}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/configuration"
    response = connection.post(signature, resource_url, query_params, body)
    email = EmailResponseBuilder.new
    emailObj = email.buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return emailObj
end
get_email_configurations() click to toggle source

Gets all Email Configurations for the app

@return Email object containing all Email Configurations

@raise App42Exception

# File lib/email/EmailService.rb, line 149
def get_email_configurations()
  puts "getEmailConfigurations "
  puts "Base url #{@base_url}"
  response = nil;
  emailObj = nil;
  emailObj = Email.new
  util = Util.new
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/configuration"
    response = connection.get(signature, resource_url, query_params)
    emailObj = EmailResponseBuilder.new().buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return emailObj
end
remove_email_configuration(emailId) click to toggle source

Removes email configuration for the given email id. Note: In future the developer wont be able to send mails through this id

@param emailId

- The email id for which the configuration has to be removed

@return Email object containing the email id which has been removed

@raise App42Exception

# File lib/email/EmailService.rb, line 111
def remove_email_configuration(emailId)
  puts "Delete Email config Called "
  puts "Base url #{@base_url}"
  response = nil;
  responseObj = App42Response.new();
  util = Util.new
  util.throwExceptionIfNullOrBlank(emailId, "Email Id");
  begin
    connection = App42::Connection::RESTConnection.new(@base_url)
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("emailId", emailId)
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}/configuration/#{emailId}"
    response = connection.delete(signature, resource_url, query_params)
    responseObj.strResponse=(response)
    responseObj.isResponseSuccess=(true)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return responseObj
end
send_mail(sendTo, sendSubject, sendMsg, fromEmail, emailMime) click to toggle source

Sends the Email to the specified recipient with the provided detail

@param fromEmail

- The Email Id using which the mail(s) has to be sent

@param sendTo

- The email ids to which the email has to be sent. Email can be sent to multiple email ids.

Multiple email ids can be passed using comma as the seperator e.g. sid@shephertz.com, info@shephertz.com @param sendSubject

- Subject of the Email which to be sent

@param sendMsg

- Email body which has to be sent

@param emailMIME

- MIME Type to be used for sending mail. EmailMIME available options are PLAIN_TEXT_MIME_TYPE or HTML_TEXT_MIME_TYPE

@return Email object containing all the details used for sending mail

@raise App42Exception

# File lib/email/EmailService.rb, line 197
def send_mail(sendTo, sendSubject, sendMsg, fromEmail, emailMime)
  puts "sendMail Called "
  puts "Base url #{@base_url}"
  response = nil;
  emailObj = nil;
  emailObj = Email.new
  util = Util.new
  util.throwExceptionIfNullOrBlank(sendTo, "Send To");
  util.throwExceptionIfNullOrBlank(sendSubject, "Send Subject");
  util.throwExceptionIfNullOrBlank(sendMsg, "Send Message");
  util.throwExceptionIfNullOrBlank(fromEmail, "From Email");
  util.throwExceptionIfNullOrBlank(emailMime, "emailMime");
  begin
    if (EmailMIME.new.isAvailable(emailMime) == nil)
      raise App42NotFoundException.new("Email MIME #{emailMime} does not Exist ");
    end
    connection = App42::Connection::RESTConnection.new(@base_url)
    body = {'app42' => {"email"=> {
      "to" => sendTo,
      "subject" => sendSubject,
      "msg" => sendMsg,
      "emailId" => fromEmail,
      "mimeType" => emailMime
      }}}.to_json
    puts "Body #{body}"
    query_params = Hash.new
    params = {
      'apiKey'=> @api_key,
      'version' => @version,
      'timeStamp' => util.get_timestamp_utc,
    }
    query_params = params.clone
    params.store("body", body)
    signature = util.sign(@secret_key, params)
    resource_url = "#{@version}/#{@resource}"
    response = connection.post(signature, resource_url, query_params, body)
    emailObj = EmailResponseBuilder.new().buildResponse(response)
  rescue  App42Exception =>e
    raise e
  rescue  Exception => e
    raise App42Exception.new(e)
  end
  return emailObj
end