Module: MultiMail::Receiver::Base

Included in:
Cloudmailin, Mailgun, Mandrill, Postmark, SendGrid, Simple
Defined in:
lib/multi_mail/receiver/base.rb

Overview

Abstract class for incoming email receivers.

The transform instance method must be implemented in sub-classes. The valid? and spam? instance methods may be implemented in sub-classes.

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#initialize(options = {}) ⇒ Object

Initializes an incoming email receiver.

Parameters:

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

    required and optional arguments



18
19
20
# File 'lib/multi_mail/receiver/base.rb', line 18

def initialize(options = {})
  self.class.validate_options(options)
end

#process(raw) ⇒ Array<Mail::Message>

Ensures a request is authentic, parses it into a params hash, and transforms it into a list of messages.

Parameters:

  • raw (String, Array, Hash, Rack::Request)

    raw POST data or a params hash

Returns:

Raises:



28
29
30
31
32
33
34
35
# File 'lib/multi_mail/receiver/base.rb', line 28

def process(raw)
  params = self.class.parse(raw)
  if valid?(params)
    transform(params)
  else
    raise ForgedRequest
  end
end

#spam?(message) ⇒ Boolean

Returns whether a message is spam.

Parameters:

Returns:

  • (Boolean)

    whether the message is spam



57
58
59
# File 'lib/multi_mail/receiver/base.rb', line 57

def spam?(message)
  false
end

#transform(params) ⇒ Array<Mail::Message>

Transforms the content of a provider's webhook into a list of messages.

Parameters:

  • params (Hash)

    the content of the provider's webhook

Returns:

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/multi_mail/receiver/base.rb', line 49

def transform(params)
  raise NotImplementedError
end

#valid?(params) ⇒ Boolean

Returns whether a request is authentic.

Parameters:

  • params (Hash)

    the content of the provider's webhook

Returns:

  • (Boolean)

    whether the request is authentic



41
42
43
# File 'lib/multi_mail/receiver/base.rb', line 41

def valid?(params)
  true
end