Adding API method to set the Auto-Submitted header to OCP\Mail\IMessage

and implementation in OC\Mail\Message

Signed-off-by: Bennet Becker <bbecker@pks.mpg.de>
This commit is contained in:
Bennet Becker 2022-12-22 13:30:55 +01:00 committed by Bennet Becker
parent 5c4b4bde1b
commit b3d9b57815
No known key found for this signature in database
GPG key ID: B4C66D4902D1FA86
3 changed files with 109 additions and 0 deletions

View file

@ -31,6 +31,7 @@ declare(strict_types=1);
*/
namespace OC\Mail;
use OCP\Mail\AutoSubmittedValue;
use OCP\Mail\IAttachment;
use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMessage;
@ -301,4 +302,36 @@ class Message implements IMessage {
}
return $this;
}
/**
* Add the Auto-Submitted header to the email, preventing most automated
* responses to automated messages.
*
* @param string $value (one of AutoSubmittedValue::NO, AutoSubmittedValue::AUTO_GENERATED, AutoSubmittedValue::AUTO_REPLIED)
* @return $this
*/
public function setAutoSubmitted(string $value): IMessage {
$headers = $this->swiftMessage->getHeaders();
if($headers->has('Auto-Submitted')) {
$auto_submitted = $headers->get('Auto-Submitted');
$auto_submitted->setValue($value);
} else {
$headers->addTextHeader('Auto-Submitted', $value);
}
return $this;
}
/**
* Get the current value of the Auto-Submitted header. Defaults to "no"
* which is equivalent to the header not existing at all
*
* @return string
*/
public function getAutoSubmitted(): AutoSubmittedValue {
$headers = $this->swiftMessage->getHeaders();
return $headers->has('Auto-Submitted') ?
$headers->get('Auto-Submitted')->toString() : "no";
}
}

View file

@ -0,0 +1,66 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2022 Bennet Becker <dev@bennet.cc>
*
* @author Bennet Becker <dev@bennet.cc>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCP\Mail;
/**
* Keyword values for the Auto-Submitted email header, as per RFC 3834.
*
* The value "auto-notified" as per RFC 5436 is deliberately omitted as it is
* meant of notification of the sieve system.
*
* @see https://www.iana.org/assignments/auto-submitted-keywords/auto-submitted-keywords.xhtml
*
* @since 26.0.0
*/
final class AutoSubmittedValue {
/**
* Indicates that a message was NOT automatically generated, but was
* created by a human (or following human interaction). It is the equivalent
* to the absence of an Auto-Submitted header altogether.
*
* @var string
* @since 26.0.0
*/
public const NO = 'no';
/**
* Indicates that a message was generated by an automatic process, and is
* not a direct response to another message
*
* @var string
* @since 26.0.0
*/
public const AUTO_GENERATED = 'auto-generated';
/**
* Indicates that a message was automatically generated as a direct response
* to another message.
*
* @var string
* @since 26.0.0
*/
public const AUTO_REPLIED = 'auto-replied';
}

View file

@ -93,4 +93,14 @@ interface IMessage {
* @since 13.0.0
*/
public function useTemplate(IEMailTemplate $emailTemplate): IMessage;
/**
* Add the Auto-Submitted header to the email, preventing most automated
* responses to automated messages.
*
* @param string $value (one of AutoSubmittedValue::NO, AutoSubmittedValue::AUTO_GENERATED, AutoSubmittedValue::AUTO_REPLIED)
* @return IMessage
* @since 26.0.0
*/
public function setAutoSubmitted(string $value): IMessage;
}