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

Inbound is scoped to the token's account, so no account_id is required.

Parameters:

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

    The client instance



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

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:



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

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:



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

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:



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

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:



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

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:



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

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:



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

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