get('name');
}
protected function _setSubject(?string $value): void
{
$this->set('name', $value);
}
/**
* @return bool
*/
protected function _hasSubject(): bool
{
return $this->has('name');
}
protected function _hasFromName(): bool
{
return $this->has('fromString');
}
protected function _hasFromAddress(): bool
{
return $this->has('fromString');
}
protected function _hasReplyToName(): bool
{
return $this->has('replyToString');
}
protected function _hasReplyToAddress(): bool
{
return $this->has('replyToString');
}
protected function _getFromName(): ?string
{
if (!$this->has('fromString')) {
return null;
}
$string = EmailService::parseFromName($this->get('fromString'));
if ($string === '') {
return null;
}
return $string;
}
protected function _getFromAddress(): ?string
{
if (!$this->has('fromString')) {
return null;
}
return EmailService::parseFromAddress($this->get('fromString'));
}
protected function _getReplyToName(): ?string
{
if (!$this->has('replyToString')) {
return null;
}
$string = $this->get('replyToString');
if (!$string) {
return null;
}
return EmailService::parseFromName(
trim(explode(';', $string)[0])
);
}
protected function _getReplyToAddress(): ?string
{
if (!$this->has('replyToString')) {
return null;
}
$string = $this->get('replyToString');
if (!$string) {
return null;
}
return EmailService::parseFromAddress(
trim(explode(';', $string)[0])
);
}
protected function _setIsRead(?bool $value): void
{
$this->setInContainer('isRead', $value !== false);
if ($value === true || $value === false) {
$this->setInContainer('isUsers', true);
return;
}
$this->setInContainer('isUsers', false);
}
public function isManuallyArchived(): bool
{
return $this->get('status') === 'Archived' && $this->get('createdById') !== 'system';
}
public function addAttachment(Attachment $attachment): void
{
if (!$this->id) {
return;
}
$attachment->set('parentId', $this->id);
$attachment->set('parentType', 'Email');
if (!$this->entityManager) {
throw new RuntimeException();
}
$this->entityManager->saveEntity($attachment);
}
protected function _getBodyPlain(): ?string
{
return $this->getBodyPlain();
}
public function hasBodyPlain(): bool
{
return $this->hasInContainer('bodyPlain') && $this->getFromContainer('bodyPlain');
}
public function getBodyPlain(): ?string
{
if ($this->getFromContainer('bodyPlain')) {
return $this->getFromContainer('bodyPlain');
}
/** @var string */
$body = $this->get('body') ?? '';
$breaks = ["
", "
", "
", "
", "<br />", "<br/>", "<br>"];
$body = str_ireplace($breaks, "\r\n", $body);
$body = strip_tags($body);
$reList = [
'&(quot|#34);',
'&(amp|#38);',
'&(lt|#60);',
'&(gt|#62);',
'&(nbsp|#160);',
'&(iexcl|#161);',
'&(cent|#162);',
'&(pound|#163);',
'&(copy|#169);',
'&(reg|#174);',
];
$replaceList = [
'',
'&',
'<',
'>',
' ',
chr(161),
chr(162),
chr(163),
chr(169),
chr(174),
];
foreach ($reList as $i => $re) {
/** @var string */
$body = mb_ereg_replace($re, $replaceList[$i], $body, 'i');
}
return $body;
}
public function getBodyPlainForSending(): string
{
return $this->getBodyPlain() ?? '';
}
public function getBodyForSending(): string
{
$body = $this->get('body') ?? '';
if (!empty($body)) {
$attachmentList = $this->getInlineAttachmentList();
foreach ($attachmentList as $attachment) {
$id = $attachment->getId();
$body = str_replace(
"\"?entryPoint=attachment&id={$id}\"",
"\"cid:{$id}\"",
$body
);
}
}
return str_replace(
"