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:



133
134
135
# File 'lib/mailtrap/sandbox_messages_api.rb', line 133

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:



77
78
79
# File 'lib/mailtrap/sandbox_messages_api.rb', line 77

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:



93
94
95
# File 'lib/mailtrap/sandbox_messages_api.rb', line 93

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:



125
126
127
# File 'lib/mailtrap/sandbox_messages_api.rb', line 125

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:



117
118
119
# File 'lib/mailtrap/sandbox_messages_api.rb', line 117

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:



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

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

#mail_headers(message_id) ⇒ Hash

Get mail headers

Parameters:

  • message_id (Integer)

    The sandbox message ID

Returns:

  • (Hash)

    mail headers of the message.

Raises:



141
142
143
# File 'lib/mailtrap/sandbox_messages_api.rb', line 141

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:



109
110
111
# File 'lib/mailtrap/sandbox_messages_api.rb', line 109

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:



85
86
87
# File 'lib/mailtrap/sandbox_messages_api.rb', line 85

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:



101
102
103
# File 'lib/mailtrap/sandbox_messages_api.rb', line 101

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