19declare(strict_types=1);
68 self::$defaultTransport = $transport;
76 public function Subject(
string $subject,
bool $addPrefix =
false,
string $contextPrefix =
''): void
78 $this->subject = $this->subjectBuilder->subject(
$subject, $addPrefix, $contextPrefix);
94 public function To($to): void
99 $this->sendto[] = $to;
106 public function Cc($cc): void
118 public function Bcc($bcc): void
120 if (is_array($bcc)) {
123 $this->abcc[] = $bcc;
180 string $file_type =
'',
181 string $disposition =
'inline',
182 ?
string $display_name =
null
184 if ($file_type ===
'') {
185 $file_type =
'application/octet-stream';
189 $this->actype[] = $file_type;
190 $this->adispo[] = $disposition;
191 $this->adisplay[] = $display_name;
202 foreach ($this->aattach as $attachment) {
204 if (isset($this->adisplay[
$i]) && is_string($this->adisplay[
$i]) && $this->adisplay[
$i] !==
'') {
209 'path' => $attachment,
224 return array_values($this->images);
231 $this->finalBodyAlt =
'';
232 $this->finalBody =
'';
235 if (
$DIC->settings()->get(
'mail_send_html',
'0')) {
236 $skin =
$DIC[
'ilClientIniFile']->readVariable(
'layout',
'skin');
238 $this->buildBodyMultiParts($skin);
239 $this->buildHtmlInlineImages($skin);
241 $this->finalBody = $this->removeHTMLTags($this->body);
247 $maybeHTML = str_ireplace([
'<br />',
'<br>',
'<br/>'],
"\n", $maybeHTML);
249 return strip_tags($maybeHTML);
254 if ($this->body ===
'') {
258 if (strip_tags($this->body,
'<b><u><i><a>') === $this->body) {
262 $this->finalBodyAlt = strip_tags($this->body);
263 $this->body = $this->
refinery->string()->makeClickable()->transform(nl2br($this->body));
266 $this->finalBodyAlt = strip_tags(str_ireplace([
"<br />",
"<br>",
"<br/>"],
"\n", $this->body));
269 $this->finalBody = str_replace(
'{PLACEHOLDER}', $this->body, $this->getHtmlEnvelope($skin));
274 $bracket_path =
'./Services/Mail/templates/default/tpl.html_mail_template.html';
276 if ($skin !==
'default') {
277 $tplpath =
'./Customizing/global/skin/' . $skin .
'/Services/Mail/tpl.html_mail_template.html';
279 if (is_file($tplpath)) {
280 $bracket_path =
'./Customizing/global/skin/' . $skin .
'/Services/Mail/tpl.html_mail_template.html';
284 return file_get_contents($bracket_path);
289 $this->gatherImagesFromDirectory(
'./Services/Mail/templates/default/img');
291 if ($skin !==
'default') {
292 $skinDirectory =
'./Customizing/global/skin/' . $skin .
'/Services/Mail/img';
293 if (is_dir($skinDirectory) && is_readable($skinDirectory)) {
294 $this->gatherImagesFromDirectory($skinDirectory,
true);
299 protected function gatherImagesFromDirectory(
string $directory,
bool $clearPrevious =
false): void
301 if ($clearPrevious) {
305 foreach (
new RegexIterator(
306 new DirectoryIterator($directory),
307 '/\.(jpg|jpeg|gif|svg|png)$/i'
310 $cid =
'img/' . $file->getFilename();
312 $this->images[$cid] = [
313 'path' => $file->getPathname(),
315 'name' => $file->getFilename()
323 $transport = self::getDefaultTransport();
328 return $transport->send($this);
Class ilMailMimeSubjectBuilder.
Attach(string $filename, string $file_type='', string $disposition='inline', ?string $display_name=null)
buildHtmlInlineImages(string $skin)
Send(ilMailMimeTransport $transport=null)
ilMailMimeSubjectBuilder $subjectBuilder
buildBodyMultiParts(string $skin)
removeHTMLTags(string $maybeHTML)
static getDefaultTransport()
static setDefaultTransport(?ilMailMimeTransport $transport)
const MAIL_SUBJECT_PREFIX
From(ilMailMimeSender $sender)
getHtmlEnvelope(string $skin)
Subject(string $subject, bool $addPrefix=false, string $contextPrefix='')
static ilMailMimeTransport $defaultTransport
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
if(!file_exists(getcwd() . '/ilias.ini.php'))
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface ilMailMimeTransport.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...