Spaces:
No application file
No application file
| namespace Mautic\EmailBundle\MonitoredEmail; | |
| class Message | |
| { | |
| public $id; | |
| public $date; | |
| public $subject; | |
| public $fromName; | |
| public $fromAddress; | |
| public $to = []; | |
| public $toString; | |
| public $cc = []; | |
| public $replyTo = []; | |
| public $inReplyTo = false; | |
| public $returnPath = false; | |
| public $references = []; | |
| public string $textPlain = ''; | |
| public $textHtml; | |
| public string $dsnReport = ''; | |
| public string $dsnMessage = ''; | |
| public $fblReport; | |
| public $fblMessage; | |
| public $xHeaders = []; | |
| /** | |
| * @var Attachment[] | |
| */ | |
| protected $attachments = []; | |
| public function addAttachment(Attachment $attachment): void | |
| { | |
| $this->attachments[$attachment->id] = $attachment; | |
| } | |
| /** | |
| * @return Attachment[] | |
| */ | |
| public function getAttachments() | |
| { | |
| return $this->attachments; | |
| } | |
| /** | |
| * Get array of internal HTML links placeholders. | |
| * | |
| * @return array attachmentId => link placeholder | |
| */ | |
| public function getInternalLinksPlaceholders(): array | |
| { | |
| return preg_match_all('/=["\'](ci?d:([\w\.%*@-]+))["\']/i', $this->textHtml, $matches) ? array_combine($matches[2], $matches[1]) : []; | |
| } | |
| /** | |
| * @return mixed | |
| */ | |
| public function replaceInternalLinks($baseUri) | |
| { | |
| $baseUri = rtrim($baseUri, '\\/').'/'; | |
| $fetchedHtml = $this->textHtml; | |
| foreach ($this->getInternalLinksPlaceholders() as $attachmentId => $placeholder) { | |
| if (isset($this->attachments[$attachmentId])) { | |
| $fetchedHtml = str_replace($placeholder, $baseUri.basename($this->attachments[$attachmentId]->filePath), $fetchedHtml); | |
| } | |
| } | |
| return $fetchedHtml; | |
| } | |
| } | |