19 declare(strict_types=1);
58 $factory = $DIC[
"mail.mime.transport.factory"];
59 self::setDefaultTransport(
$factory->getTransport());
68 self::$defaultTransport = $transport;
73 return self::$defaultTransport;
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;
151 public function Body(
string $body): void
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');
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);
buildHtmlInlineImages(string $skin)
removeHTMLTags(string $maybeHTML)
getHtmlEnvelope(string $skin)
Class ilMailMimeSubjectBuilder.
Send(ilMailMimeTransport $transport=null)
Subject(string $subject, bool $addPrefix=false, string $contextPrefix='')
static setDefaultTransport(?ilMailMimeTransport $transport)
static getDefaultTransport()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface ilMailMimeTransport.
buildBodyMultiParts(string $skin)
ilMailMimeSubjectBuilder $subjectBuilder
static ilMailMimeTransport $defaultTransport
const MAIL_SUBJECT_PREFIX
From(ilMailMimeSender $sender)
Attach(string $filename, string $file_type='', string $disposition='inline', ?string $display_name=null)