$message->useTemplate($template);
- $vCalendar = $this->imipService->generateVCalendar($iTipMessage, $vEvent);
-
- $attachment = $this->mailer->createAttachment(
- $vCalendar->serialize(),
+ $itip_msg = $iTipMessage->message->serialize();
+ $message->attachInline(
+ $itip_msg,
'event.ics',
- 'text/calendar; method=' . $iTipMessage->method
+ 'text/calendar; method=' . $iTipMessage->method,
);
- $message->attach($attachment);
try {
$failed = $this->mailer->send($message);
return $this;
}
+ /**
+ * Can be used to "attach content inline" as message parts with specific MIME type and encoding.
+ * {@inheritDoc}
+ * @since 26.0.0
+ */
+ public function attachInline(string $body, string $name, string $contentType = null): IMessage {
+ # To be sure this works with iCalendar messages, we encode with 8bit instead of
+ # quoted-printable encoding. We save the current encoder, replace the current
+ # encoder with an 8bit encoder and after we've finished, we reset the encoder
+ # to the previous one. Originally intended to be added after the message body,
+ # as it is curently unknown if all mail clients handle this properly if added
+ # before.
+ $this->symfonyEmail->embed($body, $name, $contentType);
+ return $this;
+ }
+
/**
* Converts the [['displayName' => 'email'], ['displayName2' => 'email2']] arrays to valid Adresses
*
*/
public function attach(IAttachment $attachment): IMessage;
+ /**
+ * Can be used to "attach content inline" as message parts with specific MIME type and encoding.
+ *
+ * @param string $body body of the MIME part
+ * @param string $name the file name
+ * @param string|null $contentType MIME Content-Type (e.g. text/plain or text/calendar)
+ *
+ * @return IMessage
+ * @since 26.0.0
+ */
+ public function attachInline(string $body, string $name, string $contentType = null): IMessage;
+
/**
* Set the from address of this message.
*