Class: Mailtrap::InboundMessagesAPI

Inherits:
Object
  • Object
show all
Includes:
BaseAPI
Defined in:
lib/mailtrap/inbound_messages_api.rb

Constant Summary collapse

SEND_OPTIONS =
%i[from to cc bcc reply_to text html category attachments headers custom_variables].freeze

Instance Attribute Summary

Attributes included from BaseAPI

#account_id, #client

Instance Method Summary collapse

Methods included from BaseAPI

included

Constructor Details

#initialize(client = Mailtrap::Client.new) ⇒ InboundMessagesAPI

Returns a new instance of InboundMessagesAPI.

Parameters:

  • client (Mailtrap::Client) (defaults to: Mailtrap::Client.new)

    The client instance



18
19
20
# File 'lib/mailtrap/inbound_messages_api.rb', line 18

def initialize(client = Mailtrap::Client.new)
  @client = client
end

Instance Method Details

#delete(inbox_id, message_id) ⇒ Object

Deletes a message

Parameters:

  • inbox_id (Integer)

    The inbox ID

  • message_id (String)

    The message ID

Returns:

  • nil

Raises:



52
53
54
# File 'lib/mailtrap/inbound_messages_api.rb', line 52

def delete(inbox_id, message_id)
  client.delete("#{messages_path(inbox_id)}/#{message_id}")
end

#forward(inbox_id, message_id, options) ⇒ InboundSendResult

Forwards a message to new recipients

Parameters:

  • inbox_id (Integer)

    The inbox ID

  • message_id (String)

    The message ID

  • options (Hash)

    The send parameters (see SEND_OPTIONS)

Returns:

Raises:



81
82
83
84
85
# File 'lib/mailtrap/inbound_messages_api.rb', line 81

def forward(inbox_id, message_id, options)
  raise ArgumentError, 'to is required for forward' if Array(options[:to]).empty?

  send_action(inbox_id, message_id, 'forward', options)
end

#get(inbox_id, message_id) ⇒ InboundMessage

Fetches a single message with its full body and attachment download URLs

Parameters:

  • inbox_id (Integer)

    The inbox ID

  • message_id (String)

    The message ID

Returns:

Raises:



43
44
45
# File 'lib/mailtrap/inbound_messages_api.rb', line 43

def get(inbox_id, message_id)
  build_message(client.get("#{messages_path(inbox_id)}/#{message_id}"))
end

#list(inbox_id, last_id: nil) ⇒ InboundMessagesListResponse

Lists messages in an inbox (cursor-paginated)

Parameters:

  • inbox_id (Integer)

    The inbox ID

  • last_id (String, nil) (defaults to: nil)

    Cursor from the previous response's last_id for the next page

Returns:

Raises:



27
28
29
30
31
32
33
34
35
36
# File 'lib/mailtrap/inbound_messages_api.rb', line 27

def list(inbox_id, last_id: nil)
  query_params = last_id ? { last_id: } : {}
  response = client.get(messages_path(inbox_id), query_params)

  InboundMessagesListResponse.new(
    data: Array(response[:data]).map { |item| build_message(item) },
    total_count: response[:total_count],
    last_id: response[:last_id]
  )
end

#reply(inbox_id, message_id, options) ⇒ InboundSendResult

Replies to a message (sends to the original sender)

Parameters:

  • inbox_id (Integer)

    The inbox ID

  • message_id (String)

    The message ID

  • options (Hash)

    The send parameters (see SEND_OPTIONS)

Returns:

Raises:



63
64
65
# File 'lib/mailtrap/inbound_messages_api.rb', line 63

def reply(inbox_id, message_id, options)
  send_action(inbox_id, message_id, 'reply', options)
end

#reply_all(inbox_id, message_id, options) ⇒ InboundSendResult

Replies to a message and copies the original's other recipients

Parameters:

  • inbox_id (Integer)

    The inbox ID

  • message_id (String)

    The message ID

  • options (Hash)

    The send parameters (see SEND_OPTIONS)

Returns:

Raises:



72
73
74
# File 'lib/mailtrap/inbound_messages_api.rb', line 72

def reply_all(inbox_id, message_id, options)
  send_action(inbox_id, message_id, 'reply_all', options)
end