powermail
powermail copied to clipboard
Disclaimer mail doesn't use overwrite mail setting
The disclaimerAction() doesn´t use my overwrite mail address. No matter which settings, the e-mail address specified by the user is always used
I have test it with
plugin.tx_powermail.settings.setup.sender.overwrite.senderEmail = TEXT
plugin.tx_powermail.settings.setup.sender.overwrite.senderEmail.value = [email protected]
plugin.tx_powermail.settings.setup.sender.overwrite.senderName = TEXT
plugin.tx_powermail.settings.setup.sender.overwrite.senderName.value = Server from domain.org
plugin.tx_powermail.settings.setup.receiver.overwrite.senderEmail = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.senderEmail.value = [email protected]
plugin.tx_powermail.settings.setup.receiver.overwrite.senderName = TEXT
plugin.tx_powermail.settings.setup.receiver.overwrite.senderName.value = Server from domain.org
TYPO3: 11.5.16 Powermail: 10.4.3
I can confirm this with TYPO3: 12.4.11 and Powermail: 12.2.0
Possible solution: SendDisclaimedMailPreflight.php Line 77 set senderEmail to mail address from $mail: From: 'senderEmail' => $senderService->getSenderEmail(), To: 'senderEmail' => $mail->getSenderMail(),
Function with this possible solution:
/**
* @param Mail $mail
* @return void
* @throws InvalidConfigurationTypeException
* @throws ExceptionExtbaseObject
*/
public function sendMail(Mail $mail): void
{
$receiverService = GeneralUtility::makeInstance(
ReceiverMailReceiverPropertiesService::class,
$mail,
$this->settings
);
$senderService = GeneralUtility::makeInstance(
ReceiverMailSenderPropertiesService::class,
$mail,
$this->settings
);
foreach ($receiverService->getReceiverEmails() as $receiver) {
$email = [
'template' => 'Mail/DisclaimedNotificationMail',
'receiverEmail' => $receiver,
'receiverName' => $receiverService->getReceiverName(),
'senderEmail' => $mail->getSenderMail(),
'senderName' => $senderService->getSenderName(),
'replyToEmail' => $senderService->getSenderEmail(),
'replyToName' => $senderService->getSenderName(),
'subject' => ObjectUtility::getContentObject()->cObjGetSingle(
$this->conf['disclaimer.']['subject'],
$this->conf['disclaimer.']['subject.']
),
'rteBody' => '',
'format' => $this->settings['sender']['mailformat'],
'variables' => ['mail' => $mail],
];
$this->sendMailService->sendMail($email, $mail, $this->settings, 'disclaimer');
}
}
Test TypoScript:
plugin.tx_powermail {
settings {
sender.attachment = 1
setup {
receiver {
overwrite {
senderEmail = TEXT
senderEmail.value = [email protected]
replyToName = TEXT
replyToName.value >
replyToName.data = GP:tx_powermail_pi1|field|name
replyToEmail = TEXT
replyToEmail.value >
replyToEmail.data = GP:tx_powermail_pi1|field|email
}
}
sender {
default {
senderEmail = [email protected]
}
overwrite {
senderEmail = TEXT
senderEmail.value >
senderEmail.value = [email protected]
}
}
optin {
overwrite {
senderEmail = TEXT
senderEmail.value = [email protected]
}
}
}
receiver {
overwrite {
senderEmail = [email protected]
}
}
}
}
EDIT: i overwrite this method (short fast fix) with: https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Xclasses/Index.html
This problem can be solved by extending the respective TypoScript file https://github.com/in2code-de/powermail/blob/master/Configuration/TypoScript/Main/Configuration/08_Disclaimer.typoscript
There should be at least the following assignments:
plugin.tx_powermail.settings.setup {
disclaimer {
...
overwrite {
senderName = TEXT
senderName.value = {$plugin.tx_powermail.settings.disclaimer.overwrite.senderName}
senderEmail = TEXT
senderEmail.value = {$plugin.tx_powermail.settings.disclaimer.overwrite.senderEmail}
}
}
}
Then it would be possible to overwrite those values using the respective constants. Alternatively one can add those values in their site_package or directly via the TypoScript module.
If desired I can provide a PR for this.