zimbraweb package

Module contents

class zimbraweb.Response(success: bool = False, message: str = '')

Bases: object

Helper class to return a success bool and a status message.

class zimbraweb.SessionData(token: Optional[str] = None, expires: Optional[int] = None, jsessionid: Optional[str] = None, username: Optional[str] = None, from_address: Optional[str] = None, crumb: Optional[str] = None)

Bases: object

Holds all authentication session data for a single Zimbra web user.

token

A ZM_AUTH_TOKEN cookie, if authenticated.

Type

Optional[str]

expires

The unixtime expiration date of the auth token.

Type

Optional[int]

jsessionid

A JSESSIONID cookie, if a session has been opened.

Type

Optional[str]

username

The username of the authenticated user, if authenticated.

Type

Optional[str]

from_address

The default sender address used by the Zimbra web interface, if authenticated.

Type

Optional[str]

crumb

The validation crumb needed to generate payloads, if authenticated.

Type

Optional[str]

as_cookies() → Dict[str, str]

Returns a dictionary containting ZM_TEST, ZM_AUTH_TOKEN, JSESSIONID.

is_valid() → bool

Returns True if no attributes are None and auth token is still valid.

class zimbraweb.WebkitAttachment(filename: str, mimetype: str, content: bytes)

Bases: object

Represents a single attachment for WebkitFormBoundary data.

filename

The name of the attachment

Type

str

mimetype

The Mimetype, e.g. image/jpeg.

Type

str

content

The raw bytes of the attachment.

Type

bytes

class zimbraweb.ZimbraUser(url: str)

Bases: object

This class represent a single user instance on the Zimbra Web Interface.

property authenticated: bool

Is the user authenticated with the web client?

generate_webkit_payload(to: str, subject: str, body: str, attachments: List[zimbraweb.WebkitAttachment] = [], **kwargs) → Tuple[bytes, str]

Generate a WebkitFormBoundary payload

Parameters
  • to (str) – Recipient.

  • subject (str) – Email Subject Header.

  • body (str) – plain/text email body.

  • attachments (List[zimbraweb.WebkitAttachment]) – List of attachments to add to the payload.

  • **kwargs – Extended Mail Parameters (cc, bcc, replyto, inreplyto, messageid) can be set via kwargs.

Returns

A Tuple (payload [bytes], boundary [str])

get_mail_info() → Optional[Dict[str, str]]

Gets a valid crumb and from header to send an email

Returns:

Optional[Dict[str, str]]: {‘crumb’: ‘xxx’, ‘from_header’: ‘s00000@domain.com’} or None

get_session_id() → Optional[str]

Gets a new session id for the current user.

Returns

A new JESSIONID or None if an error occurred.

login(username: str, password: str) → bool

Gets an authentication token from the Zimbra Web Client using username and password as authentication.

Parameters
  • username (str) – username to use for web authentication, without domain

  • password (str) – password to use for web authentication

Returns

True if authentication was successful

logout() → bool

Logs the user out of the web client and invalidates any session data.

Returns

True if logout was successful

send_eml(eml: str) → zimbraweb.Response

Tries to send an email from a .eml file.

Parameters

eml (str) – The EML string to send

Returns

A zimbraweb.Response object with response.success == True if payload was sent successfully and the resposne message from the web client.

send_mail(to: str, subject: str, body: str, attachments: List[zimbraweb.WebkitAttachment] = [], **kwargs) → zimbraweb.Response

Sends an email as the current user.

Parameters
  • to (str) – Recipient.

  • subject (str) – Email Subject Header.

  • body (str) – plain/text email body.

  • attachments (List[zimbraweb.WebkitAttachment]) – List of attachments to send with the email.

  • **kwargs – Extended Mail Parameters (cc, bcc, replyto, inreplyto, messageid) can be set via kwargs.

Returns

A zimbraweb.Response object containing the status message of the server and response.success = True if the email was sent successfully.

send_raw_payload(payload: bytes, boundary: str) → zimbraweb.Response

Sends a raw payload to the Web interface.

Examples

>>> from zimbraweb import ZimbraUser
>>> user = ZimbraUser("https://my-zimbra.server")
>>> user.login("xxx", "xxx")
>>> payload, boundary = user.generate_webkit_payload(to="hello@example.com", subject="test mail", body="hello, world!")
>>> user.send_raw_payload(payload, boundary)
Response(success=True, status="Ihre Mail wurde gesendet.")
Parameters
  • payload (bytes) – The payload to send in the body of the request

  • boundary (str) – The boundary that is used in the WebkitFormBoundary payload

Returns

A zimbraweb.Response object with response.success == True if payload was sent successfully and the resposne message from the web client.

Submodules

zimbraweb.emlparsing module

exception zimbraweb.emlparsing.ContentTypeNotSupportedError

Bases: zimbraweb.emlparsing.UnsupportedEMLError

Exception for unsupported content types

exception zimbraweb.emlparsing.MissingHeadersError

Bases: zimbraweb.emlparsing.UnsupportedEMLError

Exception for missing headers

exception zimbraweb.emlparsing.UnsupportedEMLError

Bases: Exception

Exception for unsupported EML

zimbraweb.emlparsing.is_parsable(eml: str) → bool

Check eml string for parsability

Parameters

eml (str) – The EML string to parse.

Returns

bool if parse_eml() will throw an error.

zimbraweb.emlparsing.parse_eml(eml: str) → Dict[str, Union[str, List[Any]]]

Generate a dictionary for generate_payload() from an EML file.

Parameters

eml (str) – The EML string to parse.

Returns

A dictionary of the parsed EML file.

Return type

Dict[str, Union[str, List[WebkitAttachment]]]