branch | status |
---|---|
main | |
develop |
For the entire documentation please see https://TINF21CS1.github.io/python-zimbra-web.
The documentation for the develop branch can be found here: https://TINF21CS1.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="[email protected]", subject="subject", body="body", cc="[email protected]")
user.logout()
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)
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="[email protected]", subject="hello world!", body="this is a raw payload.")
# then send the raw_payload bytes
user.send_raw_payload(raw_payload, boundary)
user.logout()
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="[email protected]", subject="subject", body="body", attachments=attachments)
user.logout()
- 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
ormultipart/mixed
will be rejected. This is because the zimbra web interface does not allow HTML emails. Parsingmultipart/mixed
will only succeed if there is exactly onetext/plain
part and, optionally, attachments with theContent-Disposition: attachment
header. If there are anymultipart/alternative
parts, the parsing will fail because we cannot deliver them to the Zimbra web interface.
pip install zimbraweb
- Best practice is to develop in a python3.8 virtual env:
python3.8 -m venv env
,source env/bin/activate
(Unix) orenv\Scripts\activate.ps1
(Windows) - Install dev-requirements
pip install -r requirements_dev.txt
- When working on a new feature, checkout to
git branch -b feature_myfeaturename
. We are using this branching model - Before committing, check
mypy src
returns no failures.flake8 src tests
returns no problems.pytest
has no unexpected failed tests.- Optionoally, test with
tox
. Might take a few minutes so maybe only run before push.
$ git clone https://github.com/TINF21CS1/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.