Merge pull request #36118 from nextcloud/fix/caldav/invitation-outlook-compatibilty

Fix calendar emails to be outlook compatible
This commit is contained in:
Anna 2023-05-10 12:10:42 +02:00 committed by GitHub
commit 9e53934498
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 6 deletions

View file

@ -299,14 +299,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);

View file

@ -75,6 +75,22 @@ class Message implements IMessage {
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
*

View file

@ -39,6 +39,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.
*