Test casesMessage properties

Message properties

Learn how to test the common properties of an email or SMS message with Mailosaur.

Before you begin

The examples shown below are based on two key assumptions:

  1. That you have already create a basic automated test using our getting started guides.
  2. You have a chosen assertion library that you will use to test the values shown below.

Email subject

Allows you to check that the correct subject will be displayed in a recipient’s mail client.

console.log(message.subject) // "Hello world"
print(message.subject) # "Hello world"
System.out.println(message.subject()); // "Hello world"
Console.WriteLine(message.Subject); // "Hello world"
puts(message.subject) # "Hello world"
print(count($message->subject)); // "Hello world"
fmt.Println(message.Subject) // "Hello world"

Recipients

The to property of a message contains an array of all recipients of a message (excluding those that have been carbon-copied on an email).

console.log(message.to[0].name) // "Jill Smith"
console.log(message.to[0].email) // "jill@example.com"

// Phone number (for SMS tests only)
console.log(message.to[0].phone) // "+15554532452"
print(message.to[0].name) # "Jill Smith"
print(message.to[0].email) # "jill@example.com"

# Phone number (for SMS tests only)
print(message.to[0].phone) # "+15554532452"
System.out.println(message.to().get(0).name()); // "Jill Smith"
System.out.println(message.to().get(0).email()); // "jill@example.com"

// Phone number (for SMS tests only)
System.out.println(message.to().get(0).phone()); // "+15554532452"
Console.WriteLine(message.To[0].Name); // "Jill Smith"
Console.WriteLine(message.To[0].Email); // "jill@example.com"

// Phone number (for SMS tests only)
Console.WriteLine(message.To[0].Phone); // "+15554532452"
puts(message.to[0].name) # "Jill Smith"
puts(message.to[0].email) # "jill@example.com"

# Phone number (for SMS tests only)
puts(message.to[0].phone) # "+15554532452"
print($message->to[0]->name); # "Jill Smith"
print($message->to[0]->email); # "jill@example.com"

// Phone number (for SMS tests only)
print($message->to[0]->phone); # "+15554532452"
fmt.Println(message.To[0].Name)  // "Jill Smith"
fmt.Println(message.To[0].Email) // "jill@example.com"

// Phone number (for SMS tests only)
fmt.Println(message.To[0].Phone) // "+15554532452"

Carbon copy (CC) recipients

console.log(message.cc[0].name) // "Jack Smith"
console.log(message.cc[0].email) // "jack@example.com"
print(message.cc[0].name) # "Jack Smith"
print(message.cc[0].email) # "jack@example.com"
System.out.println(message.cc().get(0).name()); // "Jack Smith"
System.out.println(message.cc().get(0).email()); // "jack@example.com"
Console.WriteLine(message.Cc[0].Name); // "Jack Smith"
Console.WriteLine(message.Cc[0].Email); // "jack@example.com"
puts(message.cc[0].name) # "Jack Smith"
puts(message.cc[0].email) # "jack@example.com"
print($message->cc[0]->name); # "Jack Smith"
print($message->cc[0]->email); # "jack@example.com"
fmt.Println(message.Cc[0].Name)  // "Jack Smith"
fmt.Println(message.Cc[0].Email) // "jack@example.com"

Blind carbon-copy (BCC) recipients

console.log(message.bcc[0].name) // "Bob Smith"
console.log(message.bcc[0].email) // "bob@example.com"
print(message.bcc[0].name) # "Bob Smith"
print(message.bcc[0].email) # "bob@example.com"
System.out.println(message.bcc().get(0).name()); // "Bob Smith"
System.out.println(message.bcc().get(0).email()); // "bob@example.com"
Console.WriteLine(message.Bcc[0].Name); // "Bob Smith"
Console.WriteLine(message.Bcc[0].Email); // "bob@example.com"
puts(message.bcc[0].name) # "Bob Smith"
puts(message.bcc[0].email) # "bob@example.com"
print($message->cc[0]->name); # "Bob Smith"
print($message->cc[0]->email); # "bob@example.com"
fmt.Println(message.Bcc[0].Name)  // "Bob Smith"
fmt.Println(message.Bcc[0].Email) // "bob@example.com"

Sender

The from property of a message contains an array of senders. In almost all cases there will only be 1, however the email specification technically allows for multiple senders to exist.

console.log(message.from[0].name) // "Customer Support"
console.log(message.from[0].email) // "noreply@example.com"

// Phone number (for SMS tests only)
console.log(message.from[0].phone) // "+15554532452"
print(message.sender[0].name) # "Customer Support"
print(message.sender[0].email) # "noreply@example.com"

# Phone number (for SMS tests only)
print(message.sender[0].phone) # "+15554532452"
System.out.println(message.from().get(0).name()); // "Customer Support"
System.out.println(message.from().get(0).email()); // "noreply@example.com"

// Phone number (for SMS tests only)
System.out.println(message.from().get(0).phone()); // "+15554532452"
Console.WriteLine(message.From[0].Name); // "Customer Support"
Console.WriteLine(message.From[0].Email); // "noreply@example.com"

// Phone number (for SMS tests only)
Console.WriteLine(message.From[0].Phone); // "+15554532452"
puts(message.from[0].name) # "Customer Support"
puts(message.from[0].email) # "noreply@example.com"

# Phone number (for SMS tests only)
puts(message.from[0].phone) # "+15554532452"
print($message->from[0]->name); # "Customer Support"
print($message->from[0]->email); # "noreply@example.com"

// Phone number (for SMS tests only)
print($message->from[0]->phone); # "+15554532452"
fmt.Println(message.From[0].Name)  // "Customer Support"
fmt.Println(message.From[0].Email) // "noreply@example.com"

// Phone number (for SMS tests only)
fmt.Println(message.From[0].Phone) // "+15554532452"

Email Headers

Emails contain a set of headers that are used to transmit metadata which is typically not visible to the recipient.

All email headers are available via the metadata.headers property of a message. Each header has both a field and value property.

const headers = message.metadata.headers 
const returnPath = headers.find(
  h => h.field.toLowerCase() === 'return-path'
)

console.log(returnPath.value); // "<rp@example.com>"
headers = message.metadata.headers
return_path = [h for h in headers if h.field.lower() == "return-path"]

print(return_path[0].value) # "<rp@example.com>"
List<MessageHeader> headers = message.metadata().headers();
Optional<MessageHeader> returnPath = headers.stream()
  .filter(h -> h.field().toLowerCase().equals("return-path")).findFirst();

System.out.println(returnPath.get().value()); // "<rp@example.com>"
var headers = message.Metadata.Headers;
var returnPath = headers.First<MessageHeader>(h => h.Field.ToLowerInvariant().Equals("return-path"));

Console.WriteLine(returnPath.Value); // "<rp@example.com>"
headers = message.metadata.headers
idx = headers.find_index{ |h| h.field.downcase == "return-path" }

puts(headers[idx].value) # "<rp@example.com>"
$headers = $message->metadata->headers;
$returnPath = array_values(array_filter($headers, function ($h) {
  return strtolower($h->field) === "return-path";
}))[0];

print($returnPath->value);
headers := message.Metadata.Headers
idx := sort.Search(len(headers), func(i int) bool {
  return strings.ToLower(headers[i].Field) == "return-path"
})

fmt.Println(headers[idx].Value) // "<rp@example.com>"