diff --git a/application/Espo/Classes/RecordHooks/Email/CheckFromAddress.php b/application/Espo/Classes/RecordHooks/Email/CheckFromAddress.php index 361fac81f1..89f83902f1 100644 --- a/application/Espo/Classes/RecordHooks/Email/CheckFromAddress.php +++ b/application/Espo/Classes/RecordHooks/Email/CheckFromAddress.php @@ -57,7 +57,14 @@ class CheckFromAddress implements SaveHook return; } - if (!$entity->getFromAddress()) { + $fromAddress = $entity->getFromAddress(); + + // Should be after 'getFromAddress'. + if (!$entity->isAttributeChanged('from')) { + return; + } + + if (!$fromAddress) { throw new BadRequest("No 'from' address"); } @@ -65,7 +72,7 @@ class CheckFromAddress implements SaveHook return; } - $fromAddress = strtolower($entity->getFromAddress()); + $fromAddress = strtolower($fromAddress); foreach ($this->user->getEmailAddressGroup()->getAddressList() as $address) { if ($fromAddress === strtolower($address)) { diff --git a/application/Espo/Repositories/Email.php b/application/Espo/Repositories/Email.php index bb0cd545eb..c44dd66803 100644 --- a/application/Espo/Repositories/Email.php +++ b/application/Espo/Repositories/Email.php @@ -109,8 +109,11 @@ class Email extends Database implements public function loadFromField(EmailEntity $entity): void { - if ($entity->get('fromEmailAddressName')) { - $entity->set('from', $entity->get('fromEmailAddressName')); + $fromEmailAddressName = $entity->get('fromEmailAddressName'); + + if ($fromEmailAddressName && !$entity->isAttributeChanged('fromEmailAddressName')) { + $entity->set('from', $fromEmailAddressName); + $entity->setFetched('from', $fromEmailAddressName); return; } @@ -122,6 +125,7 @@ class Email extends Database implements if ($ea) { $entity->set('from', $ea->get('name')); + $entity->setFetched('from', $ea->get('name')); return; } @@ -132,6 +136,7 @@ class Email extends Database implements } $entity->set('from', null); + $entity->setFetched('from', null); } public function loadToField(EmailEntity $entity): void