---
url: /process-functions/emailbuilder.md
description: Builds and sends an email.
---

# &#x20;EmailBuilder&#x20;

Builds and sends an email.

```js
const sent = new EmailBuilder()
    .from("no-reply@yourcompany.com")
    .to("user@acme.com")
    .subject("Hello")
    .body("Sent from a script.")
    .send();
```

## Constructor

### new EmailBuilder `new EmailBuilder()`  {#new-emailbuilder}

Creates an empty email. Every method except `send()` returns the builder, so calls can be chained.

```js
const email = new EmailBuilder();
```

## Methods

### from `from(address)`  {#from}

Sets the sender's address. Required: `send()` fails if it's missing or isn't a valid address.

| Parameter | Type | Description |
|---|---|---|
| `address` | `string` | The sender's email address. |

### to `to(addresses)`  {#to}

Adds recipients. Call it more than once to keep adding. At least one recipient is required.

| Parameter | Type | Description |
|---|---|---|
| `addresses` | `string \| string[]` | One address, several separated by `;` or `,`, or an array of addresses. |

### cc `cc(addresses)`  {#cc}

Adds CC recipients.

| Parameter | Type | Description |
|---|---|---|
| `addresses` | `string \| string[]` | One address, several separated by `;` or `,`, or an array of addresses. |

### subject `subject(text)`  {#subject}

Sets the subject line. Defaults to `"Notification"` if it isn't set.

| Parameter | Type | Description |
|---|---|---|
| `text` | `string` | The subject. |

### body `body(body)`  {#body}

Sets the body. Defaults to empty.

| Parameter | Type | Description |
|---|---|---|
| `body` | `string` | The body text. |

### attachFile `attachFile(filename, path)`  {#attachfile}

Attaches a file. The file is read when the email is sent.

| Parameter | Type | Description |
|---|---|---|
| `filename` | `string` | The attachment's name, as shown in the email. |
| `path` | `string` | The path of the file to attach. |

### attachBase64 `attachBase64(filename, base64)`  {#attachbase64}

Attaches a file from base64 content.

| Parameter | Type | Description |
|---|---|---|
| `filename` | `string` | The attachment's name, as shown in the email. |
| `base64` | `string` | The file's content, base64-encoded. |

### clearAttachments `clearAttachments()`  {#clearattachments}

Removes every attachment, so the builder can be reused with different files.

### clearRecipients `clearRecipients()`  {#clearrecipients}

Removes every TO and CC recipient, so the builder can be reused for different people.

### send `send()`  {#send}

Sends the email. Returns `true` when it was sent, otherwise `false`.

## Examples

### Basic email

```js
const sent = new EmailBuilder()
    .from("no-reply@yourcompany.com")
    .to("user@acme.com")
    .subject("Hello")
    .body("Sent from a script.")
    .send();

console.log("Sent:", sent);
```

### With CC

```js
new EmailBuilder()
    .from("no-reply@yourcompany.com")
    .to("user@acme.com")
    .cc(["manager@acme.com", "finance@acme.com"])
    .subject("Monthly Update")
    .body("Please review the attached report.")
    .send();
```

### With a file attachment

```js
new EmailBuilder()
    .from("no-reply@yourcompany.com")
    .to("user@acme.com")
    .subject("Export")
    .body("Attached export from disk.")
    .attachFile("sales_slice.csv", "exports/sales_slice.csv")
    .send();
```

### With a base64 attachment

```js
const pdfBase64 = "JVBERi0xLjcKJc..."; // example

const ok = new EmailBuilder()
    .from("no-reply@yourcompany.com")
    .to("user@acme.com")
    .subject("Report")
    .body("See attached report.")
    .attachBase64("report.pdf", pdfBase64)
    .send();
```
