Skip to main content

A Python wrapper for the Zimbra Web Interface

Project description

Python Zimbra Web

branch status
main Tests
develop Tests

Usage

For the entire documentation please see https://cirosec-studis.github.io/python-zimbra-web.

The documentation for the develop branch can be found here: https://cirosec-studis.github.io/python-zimbra-web/develop/

You can use ZimbraUser to send E-mails. You can send multiple E-mails within a single session.

from zimbraweb import ZimbraUser

user = ZimbraUser("https://myzimbra.server")
user.login("s000000", "hunter2")
user.send_mail(to="receiver@example.com", subject="subject", body="body", cc="cc@example.com")
user.logout()

Sending EMLs

Please note the Limitations when trying to parse EML.

from zimbraweb import ZimbraUser

user = ZimbraUser("https://myzimbra.server")
user.login("s000000", "hunter2")
emlstr = open("myemlfile.eml").read()
user.send_eml(emlstr)

Sending raw WebkitPayloads

If you don't want to rely on us to generate the payload, you can generate a payload yourself and send it using

from zimbraweb import ZimbraUser

user = ZimbraUser("https://myzimbra.server")
user.login("s000000", "hunter2")

# you could also generate the payload yourself or use our library
raw_payload, boundary = user.generate_webkit_payload(to="to@example.com", subject="hello world!", body="this is a raw payload.") 

# then send the raw_payload bytes
user.send_raw_payload(raw_payload, boundary)

user.logout()

Attachments

You can generate attachments using the WebkitAttachment class:

from zimbraweb import ZimbraUser, WebkitAttachment

user = ZimbraUser("https://myzimbra.server")
user.login("s000000", "hunter2")

attachments = []
with open("myfile.jpg", "rb") as f:
   attachments.append(WebkitAttachment(content=f.read(), filename="attachment.jpg"))

user.send_mail(to="receiver@example.com", subject="subject", body="body", attachments=attachments)
user.logout()

Known Limitations

  • Emoji is not supported, even though other UTF-8 characters are. See Issue #3
  • This package is made with German UIs in mind. If your UI is in a different language, feel free to fork and adjust the language-specific strings as needed. Issue #43
  • The EML parsing can strictly only parse plaintext emails, optionally with attachments. Any emails with a Content-Type other than text/plain or multipart/mixed will be rejected. This is because the zimbra web interface does not allow HTML emails. Parsing multipart/mixed will only succeed if there is exactly one text/plain part and, optionally, attachments with the Content-Disposition: attachment header. If there are any multipart/alternative parts, the parsing will fail because we cannot deliver them to the Zimbra web interface.

Install

pip install zimbraweb

Contributing

  1. Best practice is to develop in a python3.8 virtual env: python3.8 -m venv env, source env/bin/activate (Unix) or env\Scripts\activate.ps1 (Windows)
  2. Install dev-requirements pip install -r requirements_dev.txt
  3. When working on a new feature, checkout to git branch -b feature_myfeaturename. We are using this branching model
  4. Before committing, check
    1. mypy src returns no failures.
    2. flake8 src tests returns no problems.
    3. pytest has no unexpected failed tests.
    4. Optionoally, test with tox. Might take a few minutes so maybe only run before push.

Development Install

$ git clone https://github.com/cirosec-studis/python-zimbra-web/
$ cd python-zimbra-web
$ pip install -e .

This installs the package with symlink, so the package is automatically updated, when files are changed. It can then be called in a python console.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zimbraweb-2.0.3.tar.gz (83.2 kB view details)

Uploaded Source

Built Distribution

zimbraweb-2.0.3-py3-none-any.whl (20.2 kB view details)

Uploaded Python 3

File details

Details for the file zimbraweb-2.0.3.tar.gz.

File metadata

  • Download URL: zimbraweb-2.0.3.tar.gz
  • Upload date:
  • Size: 83.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for zimbraweb-2.0.3.tar.gz
Algorithm Hash digest
SHA256 c8ebe936aa63c0a0b65c0478401b11924b075339663e7e4373b6a213e31b93e0
MD5 dadc50f7be8f8ec514575c8da65697bc
BLAKE2b-256 706dc51518e87a7c3fabde7c12182bbffc280a1d6bd08ed8bd33f2e64c433859

See more details on using hashes here.

File details

Details for the file zimbraweb-2.0.3-py3-none-any.whl.

File metadata

  • Download URL: zimbraweb-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 20.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for zimbraweb-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e07c7a4d770c0830f725aa9de2473db63b6c65c26dfc2d53e00d0512f294a26a
MD5 28c6ff5c66f030af8d04cd7ba474032b
BLAKE2b-256 85cc49501c9fb2646a6ce404a3156c21e6015ad26ca448cbb39104685ce8b32a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page