Arched Emailer
91.6%
A simple emailer for sending emails / error logs to a list of recipients.
Ignoring URL Patterns (Flask)
ArchedEmailer ignores common noise endpoints by default when intercepting Flask errors.
- Default ignored patterns:
^/static(?:/.*)?$(Flask static files)^/favicon\.ico$,^/robots\.txt$^/.*\.(css|js|png|jpg|jpeg|gif|svg|ico|webp|map)$(static assets by extension)^/(health|healthz|ready|live|status)$(health/ready endpoints)
Override the patterns via environment variable or programmatically:
-
Env override (
ARCHED_IGNORE_URL_PATTERNS):- Comma‑separated:
^/api/metrics$,^/static/.*$ - JSON array:
["^/api/metrics$", "^/static/.*$"]
- Comma‑separated:
-
Programmatic:
ae.init_app(app, intercept_errors=True, ignore_url_patterns=[r"^/health$", r"^/static/.*$"])
Explicit ignore_url_patterns passed to init_app takes precedence over the env var; if neither is provided, defaults apply.
Formatting & Linting
This repo uses Black and Ruff, integrated via pre-commit.
- Setup hooks:
pre-commit install - Run on all files:
pre-commit run --all-files - Manual format:
black .andruff check . --fix(optionalruff format .)
Configuration lives in pyproject.toml and .pre-commit-config.yaml.
Change Log
-
v0.1.4 (05/02/2024)
- Changed requirements to match the latest version of
smtpymailerwhich now uses data attributes to convert images to CID or base64, rather than the old method of using a method parameter which was rather clunky. - Added customer ID which will enable me to log requests server side per customer, and giving each customer their own unique API key
- Changed the
send_emailmethod, so we can send emails not only fromArchedbut also from the customer's email address if needed. This will be useful for sending emails from the customer's email address, but usingArched's SMTP server.
- Changed requirements to match the latest version of
-
v0.1.5 (06/02/2024)
- Make
_get_email_pathone function instead of two. - Added a
_make_requestfunction that can be used for all db calls. - Changed the requirements for the class init. Most of the needed data is stored on the server now, with a fallback mechanism to fetch from file if the server is down.
- Added a method to send errors/success logs to the backend. This will be useful for keeping track of errors.
- Created a decorator which can wrap functions around a try/except block, and send the error or success email and log to the backend.
- Make
-
v0.1.6 (07/02/2024)
- Changed the lookup
api_keyandcustomer_idmethod
- Changed the lookup
-
v0.1.7 (07/02/2024)
- Quick fix to re-add the error text to the
send_error_emailfunction. I've realised that it would be useful to have in some cases.
- Quick fix to re-add the error text to the
-
v0.1.8 (07/02/2024)
- Made it flask proof with an
init_appmethod
- Made it flask proof with an
-
v0.2.0 (07/02/2024)
- Major update to all, fully working with arched.dev backend. Updating correctly.
-
v0.2.1 (07/02/2024)
- Minjor bug fixes
-
v0.2.2 (08/02/2024)
- Changes to the flask
init_appand how it intercepts exceptions. - Changes to the UUID that was being generated before, was too long.
- Changes to the flask
-
v0.2.3 (09/02/2024)
- Added a clause that removes
requestfrom the globals() and locals() calls as it was causing a flask context error.
- Added a clause that removes
-
v0.2.4 (09/02/2024)
- Had need to report success to the backend without emailing so added
update_db_onlyto thesend_success_emailmethod.
- Had need to report success to the backend without emailing so added
-
v0.2.5 (09/02/2024)
- Minor bug fix for the class setup. Wasn't correctly reading the mail_connection details from the local dir when the server was down.
-
v0.2.6 (09/02/2024)
- Oops, another, minor bug fix. Wasn't correctly reading the mail_connection details from the local dir when the server was down.
-
v0.2.7 (09/02/2024)
- Changed how it reports the HTML content to the backend, it was sending blank strings. Now it correctly gets the html from the
text/htmlmultipart of the email object.
- Changed how it reports the HTML content to the backend, it was sending blank strings. Now it correctly gets the html from the
-
v0.2.8 (09/02/2024)
- Missed the success send email function
-
v0.2.9, 0.2.10, 0.2.11, 0.2.12, 0.2.13 (10/02/2024)
- Minor bug fixes
- Dependency issues
-
v0.2.15 (11/02/2024)
- added the option to pass in to the
init_appmethod, thecurrent_userfrom flask-login. Then error messages will be sent with the user's email address or other details.
- added the option to pass in to the
-
v0.2.15,16,17,18 (11/02/2024)
- added the option to pass in to the
init_appmethod a flag whether to usecurrent_userfrom flask-login. Then error messages will be sent with the user's email address or other details.
- added the option to pass in to the
-
v0.2.19,20,21 (11/02/2024)
- Added a
before_requesthandler that will add last few urls visited by the user to the error message. - Minor bug fixes
- Added a
-
v0.2.23 (12/02/2024)
- Changes to the way html_content is gathered
- Issue with flask context when not a flask app bug
-
v0.2.24 (12/02/2024)
- Issue with post requests being sent to raw ip. Most likely bots. Causing error when I'm not interested.
-
v0.2.25 (20/02/2024)
- Minor bug fixes for flask init_app and error handling
-
v0.2.26 (20/02/2024)
- Requirements update
-
v0.2.34 (20/02/2024)
- Added log message to the class so the database can accept logs.
Metadata
Release files for arched-emailer 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| arched_emailer-0.5.0.tar.gz | 109.1 kB | Without provenance | Details for arched_emailer-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| arched_emailer-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for arched_emailer-0.5.0-py3-none-any.whl |
Total release size: 128.3 kB
Release files / arched_emailer-0.5.0.tar.gz
| Download URL | arched_emailer-0.5.0.tar.gz |
|---|---|
| Size | 109.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b3b787f3a8ffcdf1822f48f1751b3ef3f1207e869ff7ae8e3e986ee042de5f2b
|
|
BLAKE2b-256 checksum How to use checksums |
c9a3bbd4b068f7bc868c2081e74a36c911aa1b3c177406120da6feeea691d357
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.18
|
Release files / arched_emailer-0.5.0-py3-none-any.whl
| Download URL | arched_emailer-0.5.0-py3-none-any.whl |
|---|---|
| Size | 19.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
71e56f7a1afd18e6589c1439282012465e1b4e92b6c85e942cc1a0d49a329490
|
|
BLAKE2b-256 checksum How to use checksums |
973a3bd0adce64dc6e11078ca3bff982cec3dc271d3a5fb0d36bc4907320fb78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.18
|
Security for arched-emailer 0.5.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.