Merge pull request #6255 from nextcloud/email-meta-data
Add meta information to emails for better customisation
This commit is contained in:
commit
2bf15eda26
|
@ -347,7 +347,8 @@ class ShareByMailProvider implements IShareProvider {
|
||||||
$share->getNode()->getName(),
|
$share->getNode()->getName(),
|
||||||
$link,
|
$link,
|
||||||
$share->getSharedBy(),
|
$share->getSharedBy(),
|
||||||
$share->getSharedWith()
|
$share->getSharedWith(),
|
||||||
|
$share->getExpirationDate()
|
||||||
);
|
);
|
||||||
} catch (HintException $hintException) {
|
} catch (HintException $hintException) {
|
||||||
$this->logger->error('Failed to send share by mail: ' . $hintException->getMessage());
|
$this->logger->error('Failed to send share by mail: ' . $hintException->getMessage());
|
||||||
|
@ -369,12 +370,14 @@ class ShareByMailProvider implements IShareProvider {
|
||||||
* @param string $link
|
* @param string $link
|
||||||
* @param string $initiator
|
* @param string $initiator
|
||||||
* @param string $shareWith
|
* @param string $shareWith
|
||||||
|
* @param \DateTime|null $expiration
|
||||||
* @throws \Exception If mail couldn't be sent
|
* @throws \Exception If mail couldn't be sent
|
||||||
*/
|
*/
|
||||||
protected function sendMailNotification($filename,
|
protected function sendMailNotification($filename,
|
||||||
$link,
|
$link,
|
||||||
$initiator,
|
$initiator,
|
||||||
$shareWith) {
|
$shareWith,
|
||||||
|
$expiration) {
|
||||||
$initiatorUser = $this->userManager->get($initiator);
|
$initiatorUser = $this->userManager->get($initiator);
|
||||||
$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
|
$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
|
||||||
$subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename));
|
$subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename));
|
||||||
|
@ -382,6 +385,12 @@ class ShareByMailProvider implements IShareProvider {
|
||||||
$message = $this->mailer->createMessage();
|
$message = $this->mailer->createMessage();
|
||||||
|
|
||||||
$emailTemplate = $this->mailer->createEMailTemplate();
|
$emailTemplate = $this->mailer->createEMailTemplate();
|
||||||
|
$emailTemplate->setMetaData('sharebymail.RecipientNotification', [
|
||||||
|
'filename' => $filename,
|
||||||
|
'link' => $link,
|
||||||
|
'initiator' => $initiatorDisplayName,
|
||||||
|
'expiration' => $expiration,
|
||||||
|
]);
|
||||||
|
|
||||||
$emailTemplate->addHeader();
|
$emailTemplate->addHeader();
|
||||||
$emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false);
|
$emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false);
|
||||||
|
|
|
@ -868,6 +868,7 @@ class ShareByMailProviderTest extends TestCase {
|
||||||
'https://example.com/file.txt',
|
'https://example.com/file.txt',
|
||||||
'OwnerUser',
|
'OwnerUser',
|
||||||
'john@doe.com',
|
'john@doe.com',
|
||||||
|
null,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -968,6 +969,7 @@ class ShareByMailProviderTest extends TestCase {
|
||||||
'https://example.com/file.txt',
|
'https://example.com/file.txt',
|
||||||
'InitiatorUser',
|
'InitiatorUser',
|
||||||
'john@doe.com',
|
'john@doe.com',
|
||||||
|
null,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -306,6 +306,9 @@ class LostController extends Controller {
|
||||||
$link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $user->getUID(), 'token' => $token));
|
$link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $user->getUID(), 'token' => $token));
|
||||||
|
|
||||||
$emailTemplate = $this->mailer->createEMailTemplate();
|
$emailTemplate = $this->mailer->createEMailTemplate();
|
||||||
|
$emailTemplate->setMetaData('core.ResetPassword', [
|
||||||
|
'link' => $link,
|
||||||
|
]);
|
||||||
|
|
||||||
$emailTemplate->addHeader();
|
$emailTemplate->addHeader();
|
||||||
$emailTemplate->addHeading($this->l10n->t('Password reset'));
|
$emailTemplate->addHeading($this->l10n->t('Password reset'));
|
||||||
|
|
|
@ -45,6 +45,10 @@ class EMailTemplate implements IEMailTemplate {
|
||||||
protected $urlGenerator;
|
protected $urlGenerator;
|
||||||
/** @var IL10N */
|
/** @var IL10N */
|
||||||
protected $l10n;
|
protected $l10n;
|
||||||
|
/** @var string */
|
||||||
|
protected $emailId;
|
||||||
|
/** @var array */
|
||||||
|
protected $data;
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
protected $htmlBody = '';
|
protected $htmlBody = '';
|
||||||
|
@ -348,6 +352,18 @@ EOF;
|
||||||
$this->htmlBody .= $this->head;
|
$this->htmlBody .= $this->head;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set meta data of an email
|
||||||
|
*
|
||||||
|
* @param string $emailId
|
||||||
|
* @param array $data
|
||||||
|
* @since 12.0.3
|
||||||
|
*/
|
||||||
|
public function setMetaData($emailId, array $data = []) {
|
||||||
|
$this->emailId = $emailId;
|
||||||
|
$this->data = $data;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a header to the email
|
* Adds a header to the email
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -662,7 +662,8 @@ class Manager implements IManager {
|
||||||
$share->getNode()->getName(),
|
$share->getNode()->getName(),
|
||||||
$this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', [ 'fileid' => $share->getNode()->getId() ]),
|
$this->urlGenerator->linkToRouteAbsolute('files.viewcontroller.showFile', [ 'fileid' => $share->getNode()->getId() ]),
|
||||||
$share->getSharedBy(),
|
$share->getSharedBy(),
|
||||||
$emailAddress
|
$emailAddress,
|
||||||
|
$share->getExpirationDate()
|
||||||
);
|
);
|
||||||
$this->logger->debug('Send share notification to ' . $emailAddress . ' for share with ID ' . $share->getId(), ['app' => 'share']);
|
$this->logger->debug('Send share notification to ' . $emailAddress . ' for share with ID ' . $share->getId(), ['app' => 'share']);
|
||||||
} else {
|
} else {
|
||||||
|
@ -681,12 +682,14 @@ class Manager implements IManager {
|
||||||
* @param string $link link to the file/folder
|
* @param string $link link to the file/folder
|
||||||
* @param string $initiator user ID of share sender
|
* @param string $initiator user ID of share sender
|
||||||
* @param string $shareWith email address of share receiver
|
* @param string $shareWith email address of share receiver
|
||||||
|
* @param \DateTime $expiration
|
||||||
* @throws \Exception If mail couldn't be sent
|
* @throws \Exception If mail couldn't be sent
|
||||||
*/
|
*/
|
||||||
protected function sendMailNotification($filename,
|
protected function sendMailNotification($filename,
|
||||||
$link,
|
$link,
|
||||||
$initiator,
|
$initiator,
|
||||||
$shareWith) {
|
$shareWith,
|
||||||
|
\DateTime $expiration) {
|
||||||
$initiatorUser = $this->userManager->get($initiator);
|
$initiatorUser = $this->userManager->get($initiator);
|
||||||
$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
|
$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator;
|
||||||
$subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename));
|
$subject = (string)$this->l->t('%s shared »%s« with you', array($initiatorDisplayName, $filename));
|
||||||
|
@ -694,6 +697,12 @@ class Manager implements IManager {
|
||||||
$message = $this->mailer->createMessage();
|
$message = $this->mailer->createMessage();
|
||||||
|
|
||||||
$emailTemplate = $this->mailer->createEMailTemplate();
|
$emailTemplate = $this->mailer->createEMailTemplate();
|
||||||
|
$emailTemplate->setMetaData('files_sharing.RecipientNotification', [
|
||||||
|
'filename' => $filename,
|
||||||
|
'link' => $link,
|
||||||
|
'initiator' => $initiatorDisplayName,
|
||||||
|
'expiration' => $expiration,
|
||||||
|
]);
|
||||||
|
|
||||||
$emailTemplate->addHeader();
|
$emailTemplate->addHeader();
|
||||||
$emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false);
|
$emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$initiatorDisplayName, $filename]), false);
|
||||||
|
|
|
@ -51,6 +51,13 @@ namespace OCP\Mail;
|
||||||
* @since 12.0.0
|
* @since 12.0.0
|
||||||
*/
|
*/
|
||||||
interface IEMailTemplate {
|
interface IEMailTemplate {
|
||||||
|
/**
|
||||||
|
* Set meta data of an email
|
||||||
|
*
|
||||||
|
* @since 12.0.3
|
||||||
|
*/
|
||||||
|
public function setMetaData($emailId, array $data = []);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a header to the email
|
* Adds a header to the email
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue