core.email
¶
Module Contents¶
Classes¶
Helper class that provides a standard way to create an ABC using |
|
Helper class that provides a standard way to create an ABC using |
Functions¶
|
Start the QueryIter DeleteOldEmailsFromLog to remove old, successfully send emails from the queue |
|
Callback from the Taskqueue to send the given Email |
|
Convert the given value to a list. |
|
General purpose function for sending e-mail. |
|
Sends an e-mail to the root users of the current app. |
- core.email.cleanOldEmailsFromLog(*args, **kwargs)¶
Start the QueryIter DeleteOldEmailsFromLog to remove old, successfully send emails from the queue
- class core.email.EmailTransport¶
Bases:
abc.ABC
Helper class that provides a standard way to create an ABC using inheritance.
- maxRetries = 3¶
- abstract static deliverEmail(*, sender, dests, cc, bcc, subject, body, headers, attachments, customData, **kwargs)¶
The actual email delivery must be implemented here. All email-adresses can be either in the form of “mm@example.com” or “Max Musterman <mm@example.com>”. If the delivery was successful, this method should return normally, if there was an error delivering the message it must raise an exception.
- Parameters:
sender (str) – The sender to be used on the outgoing email
dests (List[str]) – List of recipients
cc (List[str]) – : List of carbon copy-recipients
bcc (List[str]) – List of blind carbon copy-recipients
subject (str) – The subject of this email
body (str) – The contents of this email (may be text/plain or text/html)
headers (Dict[str, str]) – Custom headers to send along with this email
attachments (List[Dict[str, bytes]]) – List of attachments to include in this email
customData (Union[dict, None]) –
- static validateQueueEntity(entity)¶
This function can be used to pre-validate the queue entity before it’s deferred into the queue. Must raise an exception if the email cannot be send (f.e. if it contains an invalid attachment) :param entity: The entity to validate
- Parameters:
entity (viur.core.db.Entity) –
- static transportSuccessfulCallback(entity)¶
This callback can be overridden by the project to execute additional tasks after an email has been successfully send. :param entity: The entity which has been send
- Parameters:
entity (viur.core.db.Entity) –
- core.email.sendEmailDeferred(emailKey)¶
Callback from the Taskqueue to send the given Email :param emailKey: Database-Key of the email we should send
- Parameters:
emailKey (viur.core.db.Key) –
- core.email.normalize_to_list(value)¶
Convert the given value to a list.
If the value parameter is callable, it will be called first to get the actual value.
- core.email.sendEMail(*, tpl=None, stringTemplate=None, skel=None, sender=None, dests=None, cc=None, bcc=None, headers=None, attachments=None, context=None, **kwargs)¶
General purpose function for sending e-mail. This function allows for sending e-mails, also with generated content using the Jinja2 template engine. Your have to implement a method which should be called to send the prepared email finally. For this you have to allocate viur.email.transportClass in conf.
- Parameters:
tpl (str) – The name of a template from the deploy/emails directory.
stringTemplate (str) – This string is interpreted as the template contents. Alternative to load from template file. :param skel: The data made available to the template. In case of a Skeleton or SkelList, its parsed the usual way; Dictionaries are passed unchanged.
sender (str) – The address sending this mail.
dests (Union[str, List[str]]) – A list of addresses to send this mail to. A bare string will be treated as a list with 1 address.
cc (Union[str, List[str]]) – Carbon-copy recipients. A bare string will be treated as a list with 1 address.
bcc (Union[str, List[str]]) – Blind carbon-copy recipients. A bare string will be treated as a list with 1 address.
headers (Dict[str, str]) – Specify headers for this email.
attachments (List[Dict[str, Any]]) –
- List of files to be sent within the mail as attachments. Each attachment must be a dictionary with these keys:
filename (string): Name of the file that’s attached. Always required
content (bytes): Content of the attachment as bytes. Required for the send in blue API.
mimetype (string): Mimetype of the file. Suggested parameter for other implementations (not used by SIB)
gcsfile (string): Link to a GCS-File to include instead of content.
Not supported by the current SIB implementation
context (Union[viur.core.db.DATASTORE_BASE_TYPES, List[viur.core.db.DATASTORE_BASE_TYPES], viur.core.db.Entity]) – Arbitrary data that can be stored along the queue entry to be evaluated in transportSuccessfulCallback (useful for tracking delivery / opening events etc).
skel (Union[None, Dict, SkeletonInstance, List[SkeletonInstance]]) –
- Return type:
bool
Warning
As emails will be queued (and not send directly) you cannot exceed 1MB in total (for all text and attachments combined)!
- core.email.sendEMailToAdmins(subject, body, *args, **kwargs)¶
Sends an e-mail to the root users of the current app.
If conf[“viur.email.admin_recipients”] is set, these recipients will be used instead of the root users.
- Parameters:
subject (str) – Defines the subject of the message.
body (str) – Defines the message body.
- Return type:
bool
- class core.email.EmailTransportSendInBlue¶
Bases:
EmailTransport
Helper class that provides a standard way to create an ABC using inheritance.
- maxRetries = 3¶
- allowedExtensions¶
- static splitAddress(address)¶
Splits an Name/Address Pair as “Max Musterman <mm@example.com>” into a dict {“name”: “Max Mustermann”, “email”: “mm@example.com”} :param address: Name/Address pair :return: Splitted dict
- Parameters:
address (str) –
- Return type:
Dict[str, str]
- static deliverEmail(*, sender, dests, cc, bcc, subject, body, headers, attachments, **kwargs)¶
Internal function for delivering Emails using Send in Blue. This function requires the conf[“viur.email.sendInBlue.apiKey”] to be set. This function is supposed to return on success and throw an exception otherwise. If no exception is thrown, the email is considered send and will not be retried.
- static validateQueueEntity(entity)¶
For Send in Blue, we’ll validate the attachments (if any) against the list of supported file extensions
- Parameters:
entity (viur.core.db.Entity) –
- static check_sib_quota()¶
Periodically checks the remaining SendInBlue email quota.
This task does not have to be enabled. It automatically checks if the apiKey is configured.
There are three default thresholds: 1000, 500, 100 Others can be set via conf[“viur.email.sendInBlue.thresholds”]. An email will be sent for the lowest threshold that has been undercut.
- Return type:
None