# Rackspace Email

> Send, reply to, forward and draft email from a Rackspace Email mailbox, read and search its folders, download attachments, and keep it organised.

App · Email · 15 actions · 1 trigger. Web page: https://docs.lodol.com/docs/integrations/rackspace-email

## Triggers

Start a workflow when something happens in Rackspace Email. See [how triggers work](https://docs.lodol.com/docs/concepts/triggers.md).

### New Rackspace email

Triggers when a new email arrives in a Rackspace Email folder - the inbox unless you choose another - optionally only from one sender or domain.

**Filters**: Narrow which events start a run.

- `sender`
- `folder`

**Event fields**: What a run starts with. Later steps read each field with an @ reference.

- `email_id` (text)
- `folder` (text)
- `message_id` (text)
- `from` (text)
- `from_address` (text)
- `to` (text)
- `cc` (text)
- `subject` (text)
- `date` (text)
- `received_at` (text)
- `body` (text)
- `reply_body` (text)
- `snippet` (text)
- `has_attachments` (true/false)

## Actions

### Create a draft

Save an email to the Drafts folder without sending it, so someone can check it and send it from their mail app or webmail. Give it an email to reply to and the draft is a reply that threads with that email once it is sent.

**Inputs**

- To (`to`, text): Who it will go to, separated by commas. Can be left for whoever sends it; a reply left blank goes to the original's sender.
- Subject (`subject`, text): The subject line. A reply left blank reuses the original's subject with 'Re:' in front.
- Body (`body`, text): The message, as plain text.
- HTML body (`html_body`, text): Optional formatted version of the message, as HTML. Mail apps that can show it do; the plain text body is kept for the rest.
- Cc (`cc`, text): Addresses to copy in, separated by commas.
- Bcc (`bcc`, text): Addresses to copy in without the others seeing, separated by commas.
- Attachments (`attachments`, list): Files to attach. Upload a file or reference a document (or list of documents) from an earlier step.
- Reply to email (`reply_to_email_id`, text): The ID of an email to draft a reply to - the 'id' that 'List emails', 'Move an email' or the 'New email' trigger returns. Leave blank for a new email.
- Folder of that email (`reply_to_folder`, text): The folder the email being replied to is in. Leave blank for the inbox.
- Quote the original (`include_original`, true/false): When replying, include the original email below the draft. Default: `true`.

**Outputs**

- `draft_id` (text)
- `folder` (text)
- `message_id` (text)
- `saved` (true/false)
- `subject` (text)

**Example output**

```json
{
  "draft_id": "311",
  "folder": "Drafts",
  "message_id": "<172698.2@example.com>",
  "saved": true,
  "subject": "Quarterly update"
}
```

### Create a folder

Create a folder, optionally inside another one. If it already exists nothing changes, so a workflow can run this every time.

**Inputs**

- Name (`name`, text, required): The new folder's name, such as Invoices.
- Inside (`parent`, text): The folder to create it in. Leave blank for the top level.

**Outputs**

- `already_existed` (true/false)
- `created` (true/false)
- `name` (text)

**Example output**

```json
{
  "already_existed": false,
  "created": true,
  "name": "Invoices"
}
```

### Delete an email

Move an email to Trash, where it can still be recovered, or turn on 'Delete permanently' to remove it for good. An email already in Trash is always removed for good.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.
- Delete permanently (`permanently`, true/false): Remove the email for good instead of moving it to Trash.

**Outputs**

- `deleted` (true/false)
- `folder` (text)
- `id` (text)
- `original_removed` (true/false)
- `permanently` (true/false)
- `trash_folder` (text)
- `trash_id` (text)

**Example output**

```json
{
  "deleted": true,
  "folder": "INBOX",
  "id": "4821",
  "original_removed": true,
  "permanently": false,
  "trash_folder": "Trash",
  "trash_id": "577"
}
```

### Download attachments

Save an email's attachments to Lodol's document storage, so a later step can use them - attach them to another email, read an invoice, and so on. Name one to download just that, or leave it blank for all of them (up to 20). An email attached whole comes down as an .eml file.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.
- File name (`filename`, text): The attachment to download, as 'Get an email' lists it. Leave blank for all of them.

**Outputs**

- `count` (number)
- `document_refs` (list)
- `documents` (list)
- `email_id` (text)
- `folder` (text)
- `skipped` (number)

**Example output**

```json
{
  "count": 1,
  "document_refs": [
    "doc_0123456789abcdef0123456789abcdef"
  ],
  "documents": [
    {
      "content_type": "application/pdf",
      "document_ref": "doc_0123456789abcdef0123456789abcdef",
      "filename": "invoice-1042.pdf",
      "size_bytes": 40961,
      "url": "/actions/core/serve-document/doc_0123456789abcdef0123456789abcdef"
    }
  ],
  "email_id": "4821",
  "folder": "INBOX",
  "skipped": 0
}
```

### Flag an email

Flag an email, the way a person does in their mail app, so it stands out as needing attention. The flag stays on the email when it is moved, shows in every mail app, and anyone can clear it there. 'List emails' can return flagged emails only.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.

**Outputs**

- `folder` (text)
- `id` (text)
- `is_flagged` (true/false)

**Example output**

```json
{
  "folder": "INBOX",
  "id": "4821",
  "is_flagged": true
}
```

### Forward an email

Forward an email with a note of your own. By default the original is quoted in the message with its attachments re-attached; turn on 'Forward as attachment' to attach the whole original email instead, exactly as it arrived.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.
- To (`to`, text, required): Who to send to. Separate several addresses with commas; a name is allowed, as in Jane Doe <jane@example.com>.
- Note (`body`, text): A message to put above the forwarded email.
- Cc (`cc`, text): Addresses to copy in, separated by commas.
- Bcc (`bcc`, text): Addresses to copy in without the others seeing, separated by commas.
- Forward as attachment (`as_attachment`, true/false): Attach the original email whole (.eml) instead of quoting it.
- Include its attachments (`include_attachments`, true/false): Re-attach the original's attachments when quoting it. On unless you turn it off. Default: `true`.
- Save to Sent (`save_to_sent`, true/false): Keep a copy in the Sent folder, as a mail app would, and return its ID there as 'sent_id'. On unless you turn it off. Default: `true`.

**Outputs**

- `attachments_forwarded` (number)
- `forwarded_id` (text)
- `from` (text)
- `message_id` (text)
- `recipients` (list)
- `refused_recipients` (list)
- `saved_to_sent` (true/false)
- `sent` (true/false)
- `sent_folder` (text)
- `sent_folder_problem` (text)
- `sent_id` (text)
- `subject` (text)

**Example output**

```json
{
  "attachments_forwarded": 1,
  "forwarded_id": "4821",
  "from": "jane.doe@example.com",
  "message_id": "<172698.1@example.com>",
  "recipients": [
    "finance@example.com"
  ],
  "refused_recipients": [],
  "saved_to_sent": true,
  "sent": true,
  "sent_folder": "Sent",
  "sent_folder_problem": null,
  "sent_id": "412",
  "subject": "Fwd: Invoice 1042"
}
```

### Get an email

One email in full: its text, its HTML, who it was from and to, and a list of its attachments. Reading it does not mark it as read.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.

**Outputs**

- `attachments` (list)
- `body` (text)
- `body_truncated` (true/false)
- `cc` (list)
- `date` (text)
- `folder` (text)
- `from` (text)
- `from_address` (text)
- `from_name` (text)
- `has_attachments` (true/false)
- `html_body` (text)
- `id` (text)
- `in_reply_to` (text)
- `is_answered` (true/false)
- `is_flagged` (true/false)
- `is_read` (true/false)
- `message_id` (text)
- `received_at` (text)
- `references` (text)
- `reply_body` (text)
- `reply_to` (list)
- `size_bytes` (number)
- `snippet` (text)
- `subject` (text)
- `to` (list)

**Example output**

```json
{
  "attachments": [
    {
      "content_type": "application/pdf",
      "filename": "invoice-1042.pdf",
      "index": 1,
      "size_bytes": 40961
    }
  ],
  "body": "Hi Jane,\n\nPlease find invoice 1042 attached.\n\nThanks,\nAccounts",
  "body_truncated": false,
  "cc": [],
  "date": "Tue, 22 Sep 2026 09:14:03 -0400",
  "folder": "INBOX",
  "from": "Accounts <accounts@supplier.example>",
  "from_address": "accounts@supplier.example",
  "from_name": "Accounts",
  "has_attachments": true,
  "html_body": "<p>Hi Jane,</p><p>Please find invoice 1042 attached.</p>",
  "id": "4821",
  "in_reply_to": "",
  "is_answered": false,
  "is_flagged": false,
  "is_read": false,
  "message_id": "<CAF7x1@mail.example.com>",
  "received_at": "2026-09-22T13:14:05Z",
  "references": "",
  "reply_body": "Hi Jane,\n\nPlease find invoice 1042 attached.\n\nThanks,\nAccounts",
  "reply_to": [],
  "size_bytes": 48213,
  "snippet": "Hi Jane, please find invoice 1042 attached.",
  "subject": "Invoice 1042",
  "to": [
    "jane.doe@example.com"
  ]
}
```

### List emails

The newest emails in a folder, newest first, with their text. Filter by sender, subject, date, unread only or flagged only. Reading them does not mark them as read. Each email's text is read from its first 64 KB, which covers almost every message; 'Get an email' reads one in full.

**Inputs**

- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.
- Unread only (`unread_only`, true/false): Only emails nobody has read yet.
- Flagged only (`flagged_only`, true/false): Only emails that carry a flag, whether a person or 'Flag an email' put it there.
- From (`from_address`, text): Only emails whose sender contains this, such as accounts@supplier.example or supplier.example.
- Subject contains (`subject_contains`, text): Only emails whose subject contains this text.
- Received since (`since`, date): Only emails received on or after this date.
- Limit (`limit`, number): The most emails to return. Defaults to 10; up to 50. From 1 to 50.
- Include the text (`include_body`, true/false): Read each email's text. Turn off for a faster list of senders and subjects only. Default: `true`.

**Outputs**

- `count` (number)
- `emails` (list)
- `folder` (text)
- `matching` (number)

**Example output**

```json
{
  "count": 1,
  "emails": [
    {
      "body": "Hi Jane,\n\nPlease find invoice 1042 attached.\n\nThanks,\nAccounts",
      "body_truncated": false,
      "cc": [],
      "date": "Tue, 22 Sep 2026 09:14:03 -0400",
      "folder": "INBOX",
      "from": "Accounts <accounts@supplier.example>",
      "from_address": "accounts@supplier.example",
      "from_name": "Accounts",
      "has_attachments": true,
      "id": "4821",
      "is_answered": false,
      "is_flagged": false,
      "is_read": false,
      "message_id": "<CAF7x1@mail.example.com>",
      "received_at": "2026-09-22T13:14:05Z",
      "reply_body": "Hi Jane,\n\nPlease find invoice 1042 attached.\n\nThanks,\nAccounts",
      "reply_to": [],
      "size_bytes": 48213,
      "snippet": "Hi Jane, please find invoice 1042 attached.",
      "subject": "Invoice 1042",
      "to": [
        "jane.doe@example.com"
      ]
    }
  ],
  "folder": "INBOX",
  "matching": 1
}
```

### List folders

Every folder in the mailbox, with the ones used for sent mail, deleted mail, drafts and spam picked out, and the mailbox's own address.

**Inputs**: None.

**Outputs**

- `count` (number)
- `drafts_folder` (text)
- `folders` (list)
- `junk_folder` (text)
- `mailbox_address` (text)
- `sent_folder` (text)
- `trash_folder` (text)

**Example output**

```json
{
  "count": 2,
  "drafts_folder": null,
  "folders": [
    {
      "delimiter": ".",
      "flags": [
        "\\HasChildren"
      ],
      "name": "INBOX",
      "selectable": true,
      "special_use": null
    },
    {
      "delimiter": ".",
      "flags": [
        "\\HasNoChildren",
        "\\Sent"
      ],
      "name": "Sent",
      "selectable": true,
      "special_use": "sent"
    }
  ],
  "junk_folder": null,
  "mailbox_address": "jane.doe@example.com",
  "sent_folder": "Sent",
  "trash_folder": null
}
```

### Mark as read

Mark an email as read.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.

**Outputs**

- `folder` (text)
- `id` (text)
- `is_read` (true/false)

**Example output**

```json
{
  "folder": "INBOX",
  "id": "4821",
  "is_read": true
}
```

### Mark as unread

Mark an email as unread, for example so it stands out for a person to deal with.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.

**Outputs**

- `folder` (text)
- `id` (text)
- `is_read` (true/false)

**Example output**

```json
{
  "folder": "INBOX",
  "id": "4821",
  "is_read": false
}
```

### Move an email

Move an email to another folder. It gets a new ID there, which this step returns as 'id' for any later step that needs it.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.
- Move to (`destination`, text, required): The folder to move the email to.

**Outputs**

- `folder` (text)
- `id` (text)
- `original_removed` (true/false)
- `previous_folder` (text)
- `previous_id` (text)

**Example output**

```json
{
  "folder": "Invoices",
  "id": "92",
  "original_removed": true,
  "previous_folder": "INBOX",
  "previous_id": "4821"
}
```

### Remove an email's flag

Take the flag off an email, for example once it has been dealt with.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.

**Outputs**

- `folder` (text)
- `id` (text)
- `is_flagged` (true/false)

**Example output**

```json
{
  "folder": "INBOX",
  "id": "4821",
  "is_flagged": false
}
```

### Reply to an email

Reply to an email so it threads with the original: to its sender (or its Reply-To address), or to everyone on it. The original is quoted below the reply unless you turn that off, and it is marked as answered.

**Inputs**

- Email ID (`email_id`, text, required): The email's ID in its folder - the 'id' that 'List emails' or the 'New email' trigger returns.
- Folder (`folder`, text): The folder the email is in. Leave blank for the inbox.
- Body (`body`, text, required): The message, as plain text.
- HTML body (`html_body`, text): Optional formatted version of the message, as HTML. Mail apps that can show it do; the plain text body is kept for the rest.
- Reply to all (`reply_all`, true/false): Also reply to everyone the email was sent or copied to.
- Cc (`cc`, text): Addresses to copy in, separated by commas.
- Bcc (`bcc`, text): Addresses to copy in without the others seeing, separated by commas.
- Attachments (`attachments`, list): Files to attach. Upload a file or reference a document (or list of documents) from an earlier step.
- Quote the original (`include_original`, true/false): Include the original email below the reply. Default: `true`.
- Save to Sent (`save_to_sent`, true/false): Keep a copy in the Sent folder, as a mail app would, and return its ID there as 'sent_id'. On unless you turn it off. Default: `true`.

**Outputs**

- `from` (text)
- `in_reply_to` (text)
- `message_id` (text)
- `recipients` (list)
- `refused_recipients` (list)
- `replied_to_id` (text)
- `saved_to_sent` (true/false)
- `sent` (true/false)
- `sent_folder` (text)
- `sent_folder_problem` (text)
- `sent_id` (text)
- `subject` (text)

**Example output**

```json
{
  "from": "jane.doe@example.com",
  "in_reply_to": "<CAF7x1@mail.example.com>",
  "message_id": "<172698.1@example.com>",
  "recipients": [
    "accounts@supplier.example"
  ],
  "refused_recipients": [],
  "replied_to_id": "4821",
  "saved_to_sent": true,
  "sent": true,
  "sent_folder": "Sent",
  "sent_folder_problem": null,
  "sent_id": "412",
  "subject": "Re: Invoice 1042"
}
```

### Send an email

Send an email from the connected Rackspace mailbox, with attachments if you like, and keep a copy in its Sent folder. Rackspace allows each address 10,000 recipients a day, counted from midnight US Eastern time. If Rackspace refuses some of the recipients but not all, the email goes to the rest and 'refused_recipients' lists who did not get it.

**Inputs**

- To (`to`, text, required): Who to send to. Separate several addresses with commas; a name is allowed, as in Jane Doe <jane@example.com>.
- Subject (`subject`, text, required): The subject line.
- Body (`body`, text, required): The message, as plain text.
- HTML body (`html_body`, text): Optional formatted version of the message, as HTML. Mail apps that can show it do; the plain text body is kept for the rest.
- Cc (`cc`, text): Addresses to copy in, separated by commas.
- Bcc (`bcc`, text): Addresses to copy in without the others seeing, separated by commas.
- Reply-to (`reply_to`, text): Where replies should go, if not to this mailbox. Separate several addresses with commas.
- From name (`from_name`, text): The name shown beside the address, such as 'Acme Support'. Leave blank for the address alone.
- Attachments (`attachments`, list): Files to attach. Upload a file or reference a document (or list of documents) from an earlier step.
- Save to Sent (`save_to_sent`, true/false): Keep a copy in the Sent folder, as a mail app would, and return its ID there as 'sent_id'. On unless you turn it off. Default: `true`.

**Outputs**

- `from` (text)
- `message_id` (text)
- `recipients` (list)
- `refused_recipients` (list)
- `saved_to_sent` (true/false)
- `sent` (true/false)
- `sent_folder` (text)
- `sent_folder_problem` (text)
- `sent_id` (text)
- `subject` (text)

**Example output**

```json
{
  "from": "jane.doe@example.com",
  "message_id": "<172698.1@example.com>",
  "recipients": [
    "accounts@supplier.example"
  ],
  "refused_recipients": [],
  "saved_to_sent": true,
  "sent": true,
  "sent_folder": "Sent",
  "sent_folder_problem": null,
  "sent_id": "412",
  "subject": "Invoice 1042 received"
}
```
