aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/lib/CalDAV/Schedule/IMipPlugin.php10
-rw-r--r--lib/private/Mail/Message.php16
-rw-r--r--lib/public/Mail/IMessage.php12
3 files changed, 32 insertions, 6 deletions
diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
index d4c2976fc1a..bbe6b1ec740 100644
--- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
+++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php
@@ -285,14 +285,12 @@ class IMipPlugin extends SabreIMipPlugin {
$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);
diff --git a/lib/private/Mail/Message.php b/lib/private/Mail/Message.php
index 01beefcc6d6..35d6f96d33a 100644
--- a/lib/private/Mail/Message.php
+++ b/lib/private/Mail/Message.php
@@ -76,6 +76,22 @@ class Message implements IMessage {
}
/**
+ * 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
*
* @param array $addresses Array of mail addresses
diff --git a/lib/public/Mail/IMessage.php b/lib/public/Mail/IMessage.php
index 35a67bc4bb8..b3cc86839f1 100644
--- a/lib/public/Mail/IMessage.php
+++ b/lib/public/Mail/IMessage.php
@@ -40,6 +40,18 @@ interface IMessage {
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.
*
* If no "From" address is used \OC\Mail\Mailer will use mail_from_address and mail_domain from config.php