This commit is contained in:
139
src/cpl_mail/email.py
Normal file
139
src/cpl_mail/email.py
Normal file
@@ -0,0 +1,139 @@
|
||||
import re
|
||||
|
||||
|
||||
class EMail:
|
||||
r"""Represents an email
|
||||
|
||||
Parameter:
|
||||
header: list[:class:`str`]
|
||||
Header of the E-Mail
|
||||
subject: :class:`str`
|
||||
Subject of the E-Mail
|
||||
body: :class:`str`
|
||||
Body of the E-Mail
|
||||
transceiver: :class:`str`
|
||||
Transceiver of the E-Mail
|
||||
receiver: list[:class:`str`]
|
||||
Receiver of the E-Mail
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
header: list[str] = None,
|
||||
subject: str = None,
|
||||
body: str = None,
|
||||
transceiver: str = None,
|
||||
receiver: list[str] = None,
|
||||
):
|
||||
self._header: list[str] = header
|
||||
|
||||
self._subject: str = subject
|
||||
self._body: str = body
|
||||
|
||||
self._transceiver: str = transceiver
|
||||
self._receiver: list[str] = receiver
|
||||
|
||||
@property
|
||||
def header(self) -> str:
|
||||
return "\r\n".join(self._header)
|
||||
|
||||
@property
|
||||
def header_list(self) -> list[str]:
|
||||
return self._header
|
||||
|
||||
@header.setter
|
||||
def header(self, header: list[str]):
|
||||
self._header = header
|
||||
|
||||
@property
|
||||
def subject(self) -> str:
|
||||
return self._subject
|
||||
|
||||
@subject.setter
|
||||
def subject(self, subject: str):
|
||||
self._subject = subject
|
||||
|
||||
@property
|
||||
def body(self) -> str:
|
||||
return self._body
|
||||
|
||||
@body.setter
|
||||
def body(self, body: str):
|
||||
self._body = body
|
||||
|
||||
@property
|
||||
def transceiver(self) -> str:
|
||||
return self._transceiver
|
||||
|
||||
@transceiver.setter
|
||||
def transceiver(self, transceiver: str):
|
||||
if self.check_mail(transceiver):
|
||||
self._transceiver = transceiver
|
||||
else:
|
||||
raise Exception(f"Invalid email: {transceiver}")
|
||||
|
||||
@property
|
||||
def receiver(self) -> str:
|
||||
return ",".join(self._receiver)
|
||||
|
||||
@property
|
||||
def receiver_list(self) -> list[str]:
|
||||
return self._receiver
|
||||
|
||||
@receiver.setter
|
||||
def receiver(self, receiver: list[str]):
|
||||
self._receiver = receiver
|
||||
|
||||
@staticmethod
|
||||
def check_mail(address: str) -> bool:
|
||||
r"""Checks if an email is valid
|
||||
|
||||
Parameter:
|
||||
address: :class:`str`
|
||||
The address to check
|
||||
|
||||
Returns:
|
||||
Result if E-Mail is valid or not
|
||||
"""
|
||||
return bool(re.search("^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(.\\w{2,3})+$", address))
|
||||
|
||||
def add_header(self, header: str):
|
||||
r"""Adds header
|
||||
|
||||
Parameter:
|
||||
header: :class:`str`
|
||||
The header of the E-Mail
|
||||
"""
|
||||
if self._header is None:
|
||||
self._header = []
|
||||
|
||||
self._header.append(header)
|
||||
|
||||
def add_receiver(self, receiver: str):
|
||||
r"""Adds receiver
|
||||
|
||||
Parameter:
|
||||
receiver: :class:`str`
|
||||
The receiver of the E-Mail
|
||||
"""
|
||||
if self._receiver is None:
|
||||
self._receiver = []
|
||||
|
||||
if self.check_mail(receiver):
|
||||
self._receiver.append(receiver)
|
||||
else:
|
||||
raise Exception(f"Invalid email: {receiver}")
|
||||
|
||||
def get_content(self, transceiver: str):
|
||||
r"""Returns the mail as string
|
||||
|
||||
Parameter:
|
||||
transceiver: :class:`str`
|
||||
The transceiver of the E-Mail
|
||||
|
||||
Returns:
|
||||
E-Mail as string
|
||||
"""
|
||||
return str(
|
||||
f"From: {transceiver}\r\nTo: {self.receiver}\r\n{self.header}\r\nSubject: {self.subject}\r\n{self.body}"
|
||||
).encode("utf-8")
|
||||
Reference in New Issue
Block a user