Class: Mailtrap::SandboxMessagesAPI

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from BaseAPI

included

Constructor Details

#initialize(account_id, inbox_id, client = Mailtrap::Client.new) ⇒ SandboxMessagesAPI

Returns a new instance of SandboxMessagesAPI.

Parameters:

  • account_id (Integer)

    The account ID

  • inbox_id (Integer)

    The inbox ID

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

    The client instance

Raises:

  • (ArgumentError)

    If account_id is nil

  • (ArgumentError)

    If inbox_id is nil



21
22
23
24
25
26
27
# File 'lib/mailtrap/sandbox_messages_api.rb', line 21

def initialize(, inbox_id, client = Mailtrap::Client.new)
  raise ArgumentError, 'inbox_id is required' if inbox_id.nil?

  @inbox_id = inbox_id

  super(, client)
end

Instance Attribute Details

#account_idObject (readonly)

Returns the value of attribute account_id.



10
11
12
# File 'lib/mailtrap/sandbox_messages_api.rb', line 10

def 
  @account_id
end

#clientObject (readonly)

Returns the value of attribute client.



10
11
12
# File 'lib/mailtrap/sandbox_messages_api.rb', line 10

def client
  @client
end

#inbox_idObject (readonly)

Returns the value of attribute inbox_id.



10
11
12
# File 'lib/mailtrap/sandbox_messages_api.rb', line 10

def inbox_id
  @inbox_id
end

Instance Method Details

#delete(message_id) ⇒ SandboxMessage

Deletes a sandbox message

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

Raises:



41
42
43
# File 'lib/mailtrap/sandbox_messages_api.rb', line 41

def delete(message_id)
  base_delete(message_id)
end

#eml_body(message_id) ⇒ String

Get message as EML

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (String)

    mail message body in EML format.

Raises:



153
154
155
# File 'lib/mailtrap/sandbox_messages_api.rb', line 153

def eml_body(message_id)
  client.get("#{base_path}/#{message_id}/body.eml")
end

#forward_message(message_id, email:) ⇒ String

Forward message to an email address.

Parameters:

  • message_id (Integer)

    The sandbox message ID

  • email (String)

    The email to forward sandbox message to

Returns:

  • (String)

    Forwarded message confirmation

Raises:



97
98
99
# File 'lib/mailtrap/sandbox_messages_api.rb', line 97

def forward_message(message_id, email:)
  client.post("#{base_path}/#{message_id}/forward", { email: email })
end

#get(message_id) ⇒ SandboxMessage

Retrieves a specific sandbox message from inbox

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

Raises:



33
34
35
# File 'lib/mailtrap/sandbox_messages_api.rb', line 33

def get(message_id)
  base_get(message_id)
end

#html_analysis(message_id) ⇒ Hash

Get message HTML analysis

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (Hash)

    brief HTML report

Raises:



113
114
115
# File 'lib/mailtrap/sandbox_messages_api.rb', line 113

def html_analysis(message_id)
  client.get("#{base_path}/#{message_id}/analyze")
end

#html_body(message_id) ⇒ String

Get formatted HTML email body. Not applicable for plain text emails.

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (String)

    message body in html format.

Raises:



145
146
147
# File 'lib/mailtrap/sandbox_messages_api.rb', line 145

def html_body(message_id)
  client.get("#{base_path}/#{message_id}/body.html")
end

#html_source(message_id) ⇒ String

Get message source

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (String)

    HTML source of a message.

Raises:



137
138
139
# File 'lib/mailtrap/sandbox_messages_api.rb', line 137

def html_source(message_id)
  client.get("#{base_path}/#{message_id}/body.htmlsource")
end

#list(search: nil, last_id: nil, page: nil) ⇒ Array<SandboxMessage>

Lists all sandbox messages for the account, limited up to 30 at once Overrides page if both are given.

Parameters:

  • search (String) (defaults to: nil)

    Search query string. Matches subject, to_email, and to_name.

  • last_id (Integer) (defaults to: nil)

    If specified, a page of records before last_id is returned.

  • page (Integer) (defaults to: nil)

    Page number for paginated results.

Returns:

Raises:



81
82
83
84
85
86
87
88
89
90
# File 'lib/mailtrap/sandbox_messages_api.rb', line 81

def list(search: nil, last_id: nil, page: nil)
  raise ArgumentError, 'Provide either last_id or page, not both' unless last_id.nil? || page.nil?

  query_params = {}
  query_params[:search] = search unless search.nil?
  query_params[:last_id] = last_id unless last_id.nil?
  query_params[:page] = page unless page.nil?

  base_list(query_params)
end

#list_each(search: nil) {|SandboxMessage| ... } ⇒ Enumerator<SandboxMessage>

Iterates over all sandbox messages, automatically fetching each page using cursor-based pagination. Use this when you want to process messages without manually handling pagination.

Parameters:

  • search (String) (defaults to: nil)

    Search query string. Matches subject, to_email, and to_name.

Yields:

  • (SandboxMessage)

    Gives each message from every page when a block is given.

Returns:

  • (Enumerator<SandboxMessage>)

    if no block given; otherwise the result of the block

Raises:



61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/mailtrap/sandbox_messages_api.rb', line 61

def list_each(search: nil, &block)
  return to_enum(__method__, search: search) unless block

  last_id = nil
  loop do
    messages = list(search: search, last_id: last_id)
    break if messages.empty?

    messages.each { |message| block.call(message) }
    last_id = messages.last.id
  end
end

#mail_headers(message_id) ⇒ Hash

Get mail headers

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (Hash)

    mail headers of the message.

Raises:



161
162
163
# File 'lib/mailtrap/sandbox_messages_api.rb', line 161

def mail_headers(message_id)
  client.get("#{base_path}/#{message_id}/mail_headers")
end

#mark_as_read(message_id, is_read: true) ⇒ SandboxMessage

Updates an existing sandbox message

Parameters:

  • message_id (Integer)

    The sandbox message ID

  • is_read (Boolean) (defaults to: true)

Returns:

Raises:



50
51
52
# File 'lib/mailtrap/sandbox_messages_api.rb', line 50

def mark_as_read(message_id, is_read: true)
  base_update(message_id, { is_read: is_read })
end

#raw_body(message_id) ⇒ String

Get raw message

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (String)

    raw email body

Raises:



129
130
131
# File 'lib/mailtrap/sandbox_messages_api.rb', line 129

def raw_body(message_id)
  client.get("#{base_path}/#{message_id}/body.raw")
end

#spam_score(message_id) ⇒ Hash

Get message spam score

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (Hash)

    Spam report

Raises:



105
106
107
# File 'lib/mailtrap/sandbox_messages_api.rb', line 105

def spam_score(message_id)
  client.get("#{base_path}/#{message_id}/spam_report")
end

#text_body(message_id) ⇒ String

Get text message

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (String)

    text email body

Raises:



121
122
123
# File 'lib/mailtrap/sandbox_messages_api.rb', line 121

def text_body(message_id)
  client.get("#{base_path}/#{message_id}/body.txt")
end