sqmail

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 17, 2025 License: AGPL-3.0

README

SQmaiL

SQmaiL allows you to query your IMAP email server using SQL.

Usage

Usage:
  sqmail query [flags]

Flags:
  -f, --format string     Output format (table, csv, json, html, markdown) (default "table")
  -h, --help              help for query
  -H, --host string       IMAP server hostname
  -o, --output string     Output file (default: stdout)
  -P, --password string   IMAP password
  -p, --port int          IMAP server port (default 993)
  -q, --query string      SQL query
  -s, --silent            Silent mode (no logging)
  -t, --tls               Use TLS (default true)
  -u, --username string   IMAP username
Examples
Getting a list of all fields available for querying
sqmail getFields
| Name                             | Aliases               | Operators     | Selectable | Searchable |
|----------------------------------|-----------------------|---------------|------------|------------|
| raw                              | []                    | []            | true       | false      |
| from                             | [from_ fromAddresses] | [= LIKE]      | true       | true       |
| bcc                              | [bcc_ bccAddresses]   | [= LIKE]      | true       | true       |
| has_events                       | []                    | [=]           | true       | true       |
| events                           | []                    | []            | true       | false      |
| cc                               | [cc_ ccAddresses]     | [= LIKE]      | true       | true       |
| attachments                      | []                    | []            | true       | false      |
| to                               | [to_ toAddresses]     | [= LIKE]      | true       | true       |
| date                             | []                    | [= < > <= >=] | true       | true       |
| html                             | []                    | [LIKE]        | true       | true       |
| subject                          | []                    | [= LIKE]      | true       | true       |
| embedded                         | []                    | []            | true       | false      |
| has_attachment_with_content_type | []                    | [=]           | false      | true       |
| flags                            | []                    | [= !=]        | true       | true       |
| has_attachments                  | []                    | [=]           | true       | true       |
| seqnum                           | []                    | [=]           | false      | true       |
| serverdate                       | []                    | [= < > <= >=] | true       | true       |
| raw_invites                      | []                    | []            | true       | false      |
| mailbox                          | []                    | [=]           | false      | true       |
| uid                              | []                    | [=]           | true       | true       |
| size                             | []                    | [= < > <= >=] | true       | true       |
| headers                          | []                    | [= LIKE]      | true       | true       |
| has_embeds                       | []                    | [=]           | true       | true       |
| text                             | []                    | [LIKE]        | true       | true       |
Get all emails, in any folder, containing "GitHub" in the subject:
sqmail query -f table -H 'imap.fastmail.com' -u 'user@domain.com' -P "pAsSwOrD1!" -q "SELECT uid,from_,to_,subject FROM emails WHERE subject LIKE 'GitHub' AND mailbox = 'ANYWHERE'"
+-------+-----------------------+---------------------------------------+---------------------------------------------------------------------------------------------------------------+
| UID   | FROM                  | TO                                    | SUBJECT                                                                                                       |
+-------+-----------------------+---------------------------------------+---------------------------------------------------------------------------------------------------------------+
| 15941 | [support@github.com]  | [user@email.com]                     | [GitHub] Two-factor authentication enabled                                                                     |
Get up to 10 emails from the "INBOX" folder in JSON format
sqmail query -f json -s -H 'imap.fastmail.com' -u 'user@domain.com' -P "pAsSwOrD1!" -q "SELECT uid,from_,to_,subject FROM emails WHERE mailbox = 'INBOX' LIMIT 10"
Get all emails from the "INBOX" folder with an arbitrary header named "X-My-Header" containing "foo" in the value

Note: For some reason, some IMAP servers hang when you try to query for an arbitrary header.

sqmail query -f json -s -H 'imap.fastmail.com' -u 'user@domain.com' -P "pAsSwOrD1!" -q "SELECT uid,from_,to_,subject FROM emails WHERE mailbox = 'INBOX' AND headers = ('X-My-Header', 'foo')"
Get all emails from the "Special Emails" folder containing "GitHub" in the subject, and save the results to a CSV file
sqmail query -f csv -s -o emails.csv -H 'imap.fastmail.com' -u 'user@domain.com' -P "pAsSwOrD1!" -q "SELECT uid,from_,to_,subject FROM emails WHERE mailbox = 'Special Emails' AND subject LIKE 'GitHub'"

Limitations

Equals vs Like

Due to the way IMAP search works, both the = and LIKE operators are identical.

They are case-insensitive and perform a substring match (aka "contains").

Output Formats

When using csv or json as the output format, messages are streamed as they are received from the server.

When using table, html, or markdown as the output format, messages are buffered in memory and then pretty-printed.

Write Operations

Currently, write operations aren't supported via SQL (e.g. INSERT, UPDATE, DELETE).

That said, you can still use the sqmail package to perform write operations in Go by using the functions available under the github.com/papirocloud/sqmail/imap package.

Write operations via SQL will be supported in the future.

Too much hassle?

If you would like to skip the trouble and unlock many more possibilities, make sure to check https://papiro.cloud.

Papiro reads your emails and automates tasks according to your preferences.

With Papiro, you can centralize your email experience, create advanced filtering rules, securely sync attachments to the cloud, and integrate with other systems to streamline your workflow.

Whether you're a busy individual trying to manage personal and work emails efficiently, an event planner looking to automate communications, or just someone who wants to tailor their email workflow, Papiro provides the tools you need to make email management effortless.

Explore the full potential of your email with Papiro at https://papiro.cloud.

Directories

Path Synopsis
cmd
sqmail command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL