function Email::prepareParts
1 call to Email::prepareParts()
- Email::generateBody in vendor/
symfony/ mime/ Email.php - Generates an AbstractPart based on the raw body of a message.
File
-
vendor/
symfony/ mime/ Email.php, line 463
Class
- @author Fabien Potencier <fabien@symfony.com>
Namespace
Symfony\Component\MimeCode
private function prepareParts() : ?array {
$names = [];
$htmlPart = null;
$html = $this->html;
if (null !== $html) {
$htmlPart = new TextPart($html, $this->htmlCharset, 'html');
$html = $htmlPart->getBody();
$regexes = [
'<img\\s+[^>]*src\\s*=\\s*(?:([\'"])cid:(.+?)\\1|cid:([^>\\s]+))',
'<\\w+\\s+[^>]*background\\s*=\\s*(?:([\'"])cid:(.+?)\\1|cid:([^>\\s]+))',
];
$tmpMatches = [];
foreach ($regexes as $regex) {
preg_match_all('/' . $regex . '/i', $html, $tmpMatches);
$names = array_merge($names, $tmpMatches[2], $tmpMatches[3]);
}
$names = array_filter(array_unique($names));
}
$otherParts = $relatedParts = [];
foreach ($this->attachments as $part) {
foreach ($names as $name) {
if ($name !== $part->getName() && (!$part->hasContentId() || $name !== $part->getContentId())) {
continue;
}
if (isset($relatedParts[$name])) {
continue 2;
}
if ($name !== $part->getContentId()) {
$html = str_replace('cid:' . $name, 'cid:' . $part->getContentId(), $html, $count);
}
$relatedParts[$name] = $part;
$part->setName($part->getContentId())
->asInline();
continue 2;
}
$otherParts[] = $part;
}
if (null !== $htmlPart) {
$htmlPart = new TextPart($html, $this->htmlCharset, 'html');
}
return [
$htmlPart,
$otherParts,
array_values($relatedParts),
];
}