---
product: Chilkat
product_version: 11.7.0
language: nodejs
language_label: Node.js
class: EmailBundle
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/nodejsEmailBundleRef.html
---
# Chilkat EmailBundle — Node.js — v11.7.0

> Chilkat 11.7.0 · language=nodejs · class=EmailBundle
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/EmailBundle.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/nodejs/guide.md`.

## Purpose

EmailBundle

**Hold, search, sort, remove, save, and reload groups of email messages.**

`EmailBundle` is a container for multiple `Email` objects. It is commonly returned by mail-related operations and can also be built manually by adding individual email messages. The class provides a simple way to work with groups of messages: retrieve emails by index, search for a matching email, sort by common email fields, remove messages, clear the bundle, and serialize or reload the collection as XML.

**Email collection**

Store multiple `Email` objects together after receiving, loading, filtering, or manually building a message set.

**Retrieve messages**

Use the message count and indexed access methods to retrieve individual emails for inspection, processing, saving, or sending.

**Search within the bundle**

Locate a specific email in the collection when application logic needs to find a matching message.

**Sort messages**

Sort the bundle by date, sender, recipient, or subject to organize messages before processing or display.

**Remove or clear emails**

Remove individual messages by object or index, or clear the entire bundle when the collection is no longer needed.

**Save and reload**

Serialize the bundle to XML and reload it later, or load task results that return an email bundle.

**Common pattern:** Receive or build a bundle of `Email` objects, loop from `0` to `MessageCount - 1`, retrieve each message with `EmailAt`, and then inspect, save, sort, remove, or process each email as needed. Use `EmailBundle` for the group and `Email` for the individual message contents.

For an extended overview, see [EmailBundle Class Overview](https://www.chilkatsoft.com/emailbundle_class_overview.asp).

## Object creation, unlocking and error handling

**Object Creation**

```javascript
var obj = new chilkat.EmailBundle();
```

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Node.js.

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `DebugLogFilePath` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `LastErrorHtml` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `LastErrorText` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `LastErrorXml` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `LastMethodSuccess` | read/write | Indicates the success or failure of the most recent method call: `true` means success, `false` means failure. |
| `VerboseLogging` | `VerboseLogging` | read/write | If set to `true`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `Version` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `MessageCount` | property, read-only | `MessageCount` |
| `AddEmail` | method | `var status = AddEmail(email);` |
| `Clear` | method | `Clear();` |
| `EmailAt` | method | `var status = EmailAt(index, email);` |
| `FindEmail` | method | `var status = FindEmail(json, email);` |
| `GetXml` | method | `var retStr = GetXml();` |
| `LoadTaskResult` | method | `var status = LoadTaskResult(task);` |
| `LoadXml` | method | `var status = LoadXml(path);` |
| `LoadXmlString` | method | `var status = LoadXmlString(xmlStr);` |
| `RemoveEmail` | method | `var status = RemoveEmail(email);` |
| `RemoveEmailByIndex` | method | `var status = RemoveEmailByIndex(index);` |
| `SaveXml` | method | `var status = SaveXml(path);` |
| `SortByDate` | method | `SortByDate(ascending);` |
| `SortByRecipient` | method | `SortByRecipient(ascending);` |
| `SortBySender` | method | `SortBySender(ascending);` |
| `SortBySubject` | method | `SortBySubject(ascending);` |

Deprecated members are listed at the end of this file with their replacements; do not use them in new code.

## Properties

### EmailBundle.MessageCount

`Chilkat 11.7.0 · nodejs · EmailBundle · MessageCount · property · read-only`

```javascript
MessageCount
```

· integer, read-only

Returns the number of `Email` objects currently contained in the bundle.

Valid zero-based indexes range from `0` through `MessageCount - 1`.

## Methods

### EmailBundle.AddEmail

`Chilkat 11.7.0 · nodejs · EmailBundle · AddEmail · method`

```javascript
var status = AddEmail(email);
```

· Returns Boolean (true for success, false for failure).  
· email Email

Adds an independent copy of the `Email` object in `email` to the end of this in-memory bundle.

The bundle does not retain a reference to `email` and does not take ownership of the supplied object. Changes made to `email` after this method returns do not affect the copy stored in the bundle, and changes to the stored copy do not affect `email`.

The same `Email` object may be added more than once. Each call adds another independent copy and increases the `MessageCount` property by one.

Returns true for success, false for failure.

### EmailBundle.Clear

`Chilkat 11.7.0 · nodejs · EmailBundle · Clear · method · since 11.1.0`

```javascript
Clear();
```

· Does not return anything (returns Undefined).

Removes and discards all emails from this in-memory bundle.

After this method returns, `MessageCount` is `0`. No messages are deleted from any mail server.

### EmailBundle.EmailAt

`Chilkat 11.7.0 · nodejs · EmailBundle · EmailAt · method · since 11.0.0`

```javascript
var status = EmailAt(index, email);
```

· Returns Boolean (true for success, false for failure).  
· index Number  
· email Email

Copies the email at the zero-based index in `index` into the `Email` object in `email`.

Valid indexes range from `0` through `MessageCount - 1`. The first email is at index `0`.

`email` receives an independent copy. Changes made to `email` do not modify the email stored in the bundle.

**Note:** This is an in-memory operation and does not communicate with a mail server.

Returns true for success, false for failure.

### EmailBundle.FindEmail

`Chilkat 11.7.0 · nodejs · EmailBundle · FindEmail · method · since 11.0.0`

```javascript
var status = FindEmail(json, email);
```

· Returns Boolean (true for success, false for failure).  
· json JsonObject  
· email Email

Finds the first email in the bundle whose MIME header field matches the search criteria specified by the `JsonObject` in `json`.

At this time, a search may specify only one MIME header field. Use the following JSON format:

```
{
  "header": {
    "name": "Subject",
    "value": "Dinner on Wednesday?",
    "caseInsensitive": true
  }
}
```

`header.name` specifies the MIME header field name, and `header.value` specifies the complete field value to match. The field value must match exactly; this is not a substring, wildcard, or regular-expression search. Set `header.caseInsensitive` to `true` for a case-insensitive comparison or `false` for a case-sensitive comparison.

When a match is found, `email` receives the first matching email.

Returns true for success, false for failure.

### EmailBundle.GetXml

`Chilkat 11.7.0 · nodejs · EmailBundle · GetXml · method`

```javascript
var retStr = GetXml();
```

· Returns a String.

Serializes the entire email bundle to Chilkat XML and returns the XML document as a string.

The XML contains the bundle and its individual `Email` objects. It can be loaded into another `EmailBundle` by calling `LoadXmlString`.

This is Chilkat's XML representation of an email bundle; it is not an RFC 822/MIME message.

Returns `null` on failure

### EmailBundle.LoadTaskResult

`Chilkat 11.7.0 · nodejs · EmailBundle · LoadTaskResult · method · since 9.5.0.52`

```javascript
var status = LoadTaskResult(task);
```

· Returns Boolean (true for success, false for failure).  
· task Task

Loads this email bundle from the result of the completed asynchronous `Task` in `task`.

Use this method when an asynchronous Chilkat operation returns an `EmailBundle` as its task result. `task` must represent a task that has finished running.

Returns true for success, false for failure.

### EmailBundle.LoadXml

`Chilkat 11.7.0 · nodejs · EmailBundle · LoadXml · method`

```javascript
var status = LoadXml(path);
```

· Returns Boolean (true for success, false for failure).  
· path String

Loads an email bundle from the local filesystem path specified by `path`. The path may be absolute or relative; a filename alone refers to a file in the current working directory.

The file should contain Chilkat email-bundle XML previously produced by `SaveXml` or `GetXml`.

The emails loaded from `path` are appended to the emails already in the bundle. Existing emails are not removed or replaced.

Returns true for success, false for failure.

### EmailBundle.LoadXmlString

`Chilkat 11.7.0 · nodejs · EmailBundle · LoadXmlString · method`

```javascript
var status = LoadXmlString(xmlStr);
```

· Returns Boolean (true for success, false for failure).  
· xmlStr String

Loads an email bundle from the Chilkat XML string in `xmlStr`.

The XML is typically obtained from `GetXml` or read from a file created by `SaveXml`.

The emails loaded from `xmlStr` are appended to the emails already in the bundle. Existing emails are not removed or replaced.

Returns true for success, false for failure.

### EmailBundle.RemoveEmail

`Chilkat 11.7.0 · nodejs · EmailBundle · RemoveEmail · method`

```javascript
var status = RemoveEmail(email);
```

· Returns Boolean (true for success, false for failure).  
· email Email

Removes the first email in this in-memory bundle that matches `email`.

Chilkat first searches for an email having the same UIDL as `email`. If no email with a matching UIDL is found, it searches for the first email having the same `Message-ID` header field value. Only the first matching email is removed.

`email` may be an independent copy obtained from `EmailAt`.

**Note:** This method changes only the local bundle. It does not delete a message from a POP3 or IMAP server.

Returns true for success, false for failure.

### EmailBundle.RemoveEmailByIndex

`Chilkat 11.7.0 · nodejs · EmailBundle · RemoveEmailByIndex · method`

```javascript
var status = RemoveEmailByIndex(index);
```

· Returns Boolean (true for success, false for failure).  
· index Number

Removes the email at the zero-based index in `index`.

Valid indexes range from `0` through `MessageCount - 1`.

**Note:** This method changes only the local bundle. It does not delete a message from a mail server.

Returns true for success, false for failure.

### EmailBundle.SaveXml

`Chilkat 11.7.0 · nodejs · EmailBundle · SaveXml · method`

```javascript
var status = SaveXml(path);
```

· Returns Boolean (true for success, false for failure).  
· path String

Serializes the bundle and each contained `Email` to Chilkat XML, then writes the XML document to the local filesystem path specified by `path`. The path may be absolute or relative; a filename alone writes to the current working directory.

Reload the saved bundle by calling `LoadXml`. Use `GetXml` when the XML is needed in memory rather than in a file.

The saved file is a Chilkat email-bundle serialization, not an RFC 822/MIME message file.

Returns true for success, false for failure.

### EmailBundle.SortByDate

`Chilkat 11.7.0 · nodejs · EmailBundle · SortByDate · method`

```javascript
SortByDate(ascending);
```

· Does not return anything (returns Undefined).  
· ascending Boolean

Sorts the emails in this bundle by each `Email` object's `EmailDate` property.

Set `ascending` to `true` to sort in ascending order, from oldest to newest. Set `ascending` to `false` to sort in descending order, from newest to oldest.

The operation changes the order of the emails in the in-memory collection.

### EmailBundle.SortByRecipient

`Chilkat 11.7.0 · nodejs · EmailBundle · SortByRecipient · method`

```javascript
SortByRecipient(ascending);
```

· Does not return anything (returns Undefined).  
· ascending Boolean

Sorts the emails in this bundle by the full value of each email's `To` header field.

The comparisons are case-sensitive. Set `ascending` to `true` for ascending order or `false` for descending order. The operation changes the order of the emails in the in-memory collection.

### EmailBundle.SortBySender

`Chilkat 11.7.0 · nodejs · EmailBundle · SortBySender · method`

```javascript
SortBySender(ascending);
```

· Does not return anything (returns Undefined).  
· ascending Boolean

Sorts the emails in this bundle by the full content of each email's `From` header field.

Set `ascending` to `true` for ascending order or `false` for descending order. The operation changes the order of the emails in the in-memory collection.

### EmailBundle.SortBySubject

`Chilkat 11.7.0 · nodejs · EmailBundle · SortBySubject · method`

```javascript
SortBySubject(ascending);
```

· Does not return anything (returns Undefined).  
· ascending Boolean

Sorts the emails in this bundle by subject.

Set `ascending` to `true` for ascending order or `false` for descending order. The operation changes the order of the emails in the in-memory collection.

## Deprecated members — do not use in new code

| Member | Kind | Deprecated in | Use instead |
|---|---|---|---|
| `FindByHeader` | method | before 11.6.1 | `FindEmail` |
| `GetEmail` | method | before 11.6.1 | `EmailAt` |
| `GetUidls` | method | before 11.6.1 | — |

## Related classes

[`Email`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/nodejs/classes/Email.md), [`JsonObject`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/nodejs/classes/JsonObject.md), [`Task`](https://www.chilkatsoft.com/ai-docs/v/11.7.0/nodejs/classes/Task.md)

