📩 myl-discovery
myl-discovery is a Python library designed to detect email settings of a given email address or domain.
📥 Installation
To install myl-discovery, run the following command:
pip install myl-discovery
📖 Usage
After installing the package, you can use the autodiscover function to
discover the email settings for a domain. Here's an example:
from myldiscovery import autodiscover
settings = autodiscover("yourdomain.com") # or me@yourdomain.com
print(settings)
# For Exchange autodiscovery you need to provide credentials
settings = autodiscover(
'me@yourdomain.com',
username='WORKGROUP\me',
password='mypassword1234'
)
📄 Output
The autodiscover function returns a dictionary with the detected settings.
The dictionary contains two keys, imap and smtp, each containing a
dictionary with the keys server, port, and starttls.
Here's an example:
{
"imap": {
"server": "imap.yourdomain.com",
"port": 993,
"starttls": false,
"ssl": false
},
"smtp": {
"server": "smtp.yourdomain.com",
"port": 587,
"starttls": true,
"ssl": false
}
}
🧩 Autodiscover Functions
myl-discovery exposes several functions to discover email settings:
autodiscover: This function wraps the below function do automatically detect the right settings. (See Autodiscover strategy for more information)autodiscover_srv: This function attempts to resolve SRV records for the domain to discover IMAP and SMTP servers.autodiscover_exchange: This function attempts to use the Exchange Autodiscover service to discover email settings. It requires a username and password.autodiscover_autoconfig: This function attempts to fetch and parse an autoconfig XML file from a URL specified in the domain's TXT records.autodiscover_port_scan: This function performs a port scan on the domain to discover open IMAP and SMTP ports.
🧠 Autodiscover Strategy
The autodiscover function uses the following strategy to discover
email settings:
- It first attempts to use
autodiscover_autoconfigto discover settings from an autoconfig/autodiscover URL specified in the domain's TXT records. - If that fails, it attempts to use
autodiscover_srvto discover settings from the domain's SRV records. - If that fails and a password is provided, it attempts to use
autodiscover_exchangeto discover settings using the Exchange Autodiscover service (only if credentials were provided) - If all else fails, it uses
autodiscover_port_scanto discover settings by performing a port scan on the domain.
💻 CLI usage
If you do not intend to use the Python library and just want to detect the connection settings of an arbitrary email, myl-discovery also ships with a CLI tool.
📥 Installation
pipx install myl-discovery
📖 Usage
$ myl-discovery --help
usage: myl-discovery [-h] [-j] [-d] [-u USERNAME] [-p PASSWORD] EMAIL
positional arguments:
EMAIL
options:
-h, --help show this help message and exit
-j, --json
-d, --debug
-u USERNAME, --username USERNAME
Username (Exchange only)
-p PASSWORD, --password PASSWORD
Password (Exchange only)
Example:
$ myl-discovery user01@gmail.com
Service Host Port Encryption
imap imap.gmail.com 993 tls
smtp smtp.gmail.com 587 tls
📜 License
myl-discovery is licensed under the GNU General Public License v3.0.
📑 Upstream docs
Metadata
Release files for myl-discovery 0.6.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| myl_discovery-0.6.4.tar.gz | 48.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| myl_discovery-0.6.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.1 kB
Release files / myl_discovery-0.6.4.tar.gz
| Download URL | myl_discovery-0.6.4.tar.gz |
|---|---|
| Size | 48.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
55338f1664376651cbf4e70e20b956c8d98b366494e05bef854827971daa6c5c
|
|
BLAKE2b-256 checksum How to use checksums |
57d43a89520e10d11d5e6dab232df570bc9caee6ecf8a7b530467e12797c0739
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 15, 2025.
Transparency logRelease files / myl_discovery-0.6.4-py3-none-any.whl
| Download URL | myl_discovery-0.6.4-py3-none-any.whl |
|---|---|
| Size | 32.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
11056342f480ca667313bc56f85d18f4e787fc26201ac8de79b426481d5d5096
|
|
BLAKE2b-256 checksum How to use checksums |
d6caa385ded3fbe183c6feb72c2c6509607469bb8c00ed470264ab6f590b0bf2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 15, 2025.
Transparency log