mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-08 17:07:03 +03:00
Bugfix: ask/send readReceipt was broken
This commit is contained in:
parent
61c533a1a6
commit
5e35e39012
4 changed files with 27 additions and 28 deletions
|
|
@ -155,10 +155,10 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
: ''
|
: ''
|
||||||
).join(' '),
|
).join(' '),
|
||||||
|
|
||||||
askReadReceipt: () =>
|
askReadReceipt: () => currentMessage()?.readReceipt()
|
||||||
(MessagelistUserStore.isDraftFolder() || MessagelistUserStore.isSentFolder())
|
&& !(MessagelistUserStore.isDraftFolder() || MessagelistUserStore.isSentFolder())
|
||||||
&& currentMessage()?.readReceipt()
|
&& !currentMessage()?.flags().includes('$mdnsent')
|
||||||
&& currentMessage()?.flags().includes('$mdnsent'),
|
&& !currentMessage()?.flags().includes('\\answered'),
|
||||||
|
|
||||||
listAttachments: () => currentMessage()?.attachments()
|
listAttachments: () => currentMessage()?.attachments()
|
||||||
.filter(item => SettingsUserStore.listInlineAttachments() || !item.isLinked()),
|
.filter(item => SettingsUserStore.listInlineAttachments() || !item.isLinked()),
|
||||||
|
|
|
||||||
|
|
@ -197,10 +197,23 @@ class Message implements \JsonSerializable
|
||||||
// $oMessage->sDeliveryReceipt = \trim($oHeaders->ValueByName(MimeHeader::RETURN_RECEIPT_TO));
|
// $oMessage->sDeliveryReceipt = \trim($oHeaders->ValueByName(MimeHeader::RETURN_RECEIPT_TO));
|
||||||
|
|
||||||
// Read Receipt
|
// Read Receipt
|
||||||
$oMessage->ReadReceipt = \trim($oHeaders->ValueByName(MimeHeader::DISPOSITION_NOTIFICATION_TO));
|
$sReadReceipt = \trim($oHeaders->ValueByName(MimeHeader::DISPOSITION_NOTIFICATION_TO));
|
||||||
if (empty($oMessage->ReadReceipt)) {
|
if (empty($sReadReceipt)) {
|
||||||
$oMessage->ReadReceipt = \trim($oHeaders->ValueByName(MimeHeader::X_CONFIRM_READING_TO));
|
$sReadReceipt = \trim($oHeaders->ValueByName(MimeHeader::X_CONFIRM_READING_TO));
|
||||||
}
|
}
|
||||||
|
if ($sReadReceipt) {
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!\MailSo\Mime\Email::Parse($sReadReceipt)) {
|
||||||
|
$sReadReceipt = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (\Throwable $oException)
|
||||||
|
{
|
||||||
|
$sReadReceipt = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$oMessage->ReadReceipt = $sReadReceipt;
|
||||||
|
|
||||||
if ($spam = $oHeaders->ValueByName(MimeHeader::X_SPAMD_RESULT)) {
|
if ($spam = $oHeaders->ValueByName(MimeHeader::X_SPAMD_RESULT)) {
|
||||||
if (\preg_match('/\\[([\\d\\.-]+)\\s*\\/\\s*([\\d\\.]+)\\];/', $spam, $match)) {
|
if (\preg_match('/\\[([\\d\\.-]+)\\s*\\/\\s*([\\d\\.]+)\\];/', $spam, $match)) {
|
||||||
|
|
@ -461,21 +474,6 @@ class Message implements \JsonSerializable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$aFlags = $this->getFlags();
|
|
||||||
$sReadReceipt = $this->ReadReceipt;
|
|
||||||
if (\strlen($sReadReceipt) && !\in_array('$forwarded', $aFlags)) {
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (!\MailSo\Mime\Email::Parse($sReadReceipt)) {
|
|
||||||
$sReadReceipt = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (\Throwable $oException)
|
|
||||||
{
|
|
||||||
$sReadReceipt = '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = array(
|
$result = array(
|
||||||
'@Object' => 'Object/Message',
|
'@Object' => 'Object/Message',
|
||||||
'folder' => $this->sFolder,
|
'folder' => $this->sFolder,
|
||||||
|
|
@ -499,7 +497,7 @@ class Message implements \JsonSerializable
|
||||||
'sender' => $this->oSender,
|
'sender' => $this->oSender,
|
||||||
'deliveredTo' => $this->oDeliveredTo,
|
'deliveredTo' => $this->oDeliveredTo,
|
||||||
|
|
||||||
'readReceipt' => $sReadReceipt,
|
'readReceipt' => $this->ReadReceipt,
|
||||||
'autocrypt' => $aAutocrypt ?: null,
|
'autocrypt' => $aAutocrypt ?: null,
|
||||||
|
|
||||||
'attachments' => $this->Attachments,
|
'attachments' => $this->Attachments,
|
||||||
|
|
@ -508,7 +506,7 @@ class Message implements \JsonSerializable
|
||||||
'dkim' => $this->DKIM,
|
'dkim' => $this->DKIM,
|
||||||
'dmarc' => $this->DMARC,
|
'dmarc' => $this->DMARC,
|
||||||
|
|
||||||
'flags' => $aFlags,
|
'flags' => $this->getFlags(),
|
||||||
|
|
||||||
'inReplyTo' => $this->InReplyTo,
|
'inReplyTo' => $this->InReplyTo,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -368,14 +368,15 @@ trait Messages
|
||||||
$sFolderFullName = $this->GetActionParam('messageFolder', '');
|
$sFolderFullName = $this->GetActionParam('messageFolder', '');
|
||||||
$iUid = (int) $this->GetActionParam('messageUid', 0);
|
$iUid = (int) $this->GetActionParam('messageUid', 0);
|
||||||
|
|
||||||
$this->Cacher($oAccount)->Set(\RainLoop\KeyPathHelper::ReadReceiptCache($oAccount->Email(), $sFolderFullName, $iUid), '1');
|
|
||||||
|
|
||||||
if (\strlen($sFolderFullName) && 0 < $iUid) {
|
if (\strlen($sFolderFullName) && 0 < $iUid) {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
$this->MailClient()->MessageSetFlag($sFolderFullName, new SequenceSet($iUid), MessageFlag::MDNSENT, true, true);
|
$this->MailClient()->MessageSetFlag($sFolderFullName, new SequenceSet($iUid), MessageFlag::MDNSENT, true, true);
|
||||||
}
|
}
|
||||||
catch (\Throwable $oException) {}
|
catch (\Throwable $oException)
|
||||||
|
{
|
||||||
|
$this->Cacher($oAccount)->Set(\RainLoop\KeyPathHelper::ReadReceiptCache($oAccount->Email(), $sFolderFullName, $iUid), '1');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ trait Response
|
||||||
if (!$this->Config()->Get('labs', 'date_from_headers', true) && $aResult['internalTimestamp']) {
|
if (!$this->Config()->Get('labs', 'date_from_headers', true) && $aResult['internalTimestamp']) {
|
||||||
$aResult['dateTimestamp'] = $aResult['internalTimestamp'];
|
$aResult['dateTimestamp'] = $aResult['internalTimestamp'];
|
||||||
}
|
}
|
||||||
if (!$sParent && \strlen($aResult['readReceipt']) && !\in_array('$forwarded', $aResult['flags'])) {
|
if (!$sParent && \strlen($aResult['readReceipt']) && !\in_array('$mdnsent', $aResult['flags']) && !\in_array('\\answered', $aResult['flags'])) {
|
||||||
$oAccount = $this->getAccountFromToken();
|
$oAccount = $this->getAccountFromToken();
|
||||||
if ('1' === $this->Cacher($oAccount)->Get(\RainLoop\KeyPathHelper::ReadReceiptCache($oAccount->Email(), $aResult['folder'], $aResult['uid']), '0')) {
|
if ('1' === $this->Cacher($oAccount)->Get(\RainLoop\KeyPathHelper::ReadReceiptCache($oAccount->Email(), $aResult['folder'], $aResult['uid']), '0')) {
|
||||||
$aResult['readReceipt'] = '';
|
$aResult['readReceipt'] = '';
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue