Bei der Verwendung der action in Kontaktformularen, lassen es die Policies von vielen Hostern nicht mehr zu, daß die from Adresse auf den Wert eines email Feldes des Formulars gesetzt wird. Hier wäre ein zusätzlicher Parameter für eine reply Adresse nützlich, auch wenn das eine gewisse Aufmerksamkeit des Benutzers erfordert, der die Mail beantwortet.
Besonders praktisch, wenn der Wert für den Parameter auch noch optional das Format NAME<MAILADRESSE> haben kann.
Hier wäre der von mir dazu geschriebene Code
`
class rex_yform_action_email extends rex_yform_action_abstract
{
public function executeAction(): void
{
// see getDescription() below
$aFormParams = array(
'from' => $this->getElement(2),
'reply' => $this->getElement(3),
'to' => $this->getElement(4),
'subject' => $this->getElement(5),
'body' => $this->getElement(6)
);
// Arrays fuer Suchpattern und Ersetzung erstellen
$aPregData = array();
foreach ($this->params['value_pool']['email'] as $search => $replace) {
$aPregData['pattern'][] = ":[#]{3}" . $search . "[#]{3}:";
$aPregData['replace'][] = $replace;
// wenn in +++ eingeschlossen -> urlencode() verwenden
$aPregData['pattern'][] = ":[+]{3}" . $search . "[+]{3}:";
$aPregData['replace'][] = urlencode($replace);
}
// Werte ersetzen
foreach ($aFormParams as $label => $value) {
$aFormParams[$label] = preg_replace($aPregData['pattern'], $aPregData['replace'], $aFormParams[$label]);
}
$mail = new rex_mailer();
$mail->AddAddress($aFormParams['to'], $aFormParams['to']);
// reply zerlegen in Name und Adresse
if (! preg_match(":(.*)\<(.*)\>:", $aFormParams['reply'], $aHits)) {
// nur Adresse
$aReply = array("addr"=>$aFormParams['reply'],"name"=>"");
}
else {
// Adresse & Name
$aReply = array("addr"=>$aHits[2],"name"=>$aHits[1]);
}
$mail->AddReplyTo($aReply['addr'], $aReply['name']);
$mail->WordWrap = 80;
$mail->FromName = $aFormParams['from'];
$mail->From = $aFormParams['from'];
$mail->Sender = $aFormParams['from'];
$mail->Subject = $aFormParams['subject'];
$mail->Body = nl2br($aFormParams['body']);
$mail->AltBody = strip_tags($aFormParams['body']);
if (isset($this->params['value_pool']['email_attachments']) && is_array($this->params['value_pool']['email_attachments'])) {
foreach ($this->params['value_pool']['email_attachments'] as $v) {
$mail->AddAttachment($v[1], $v[0]);
}
}
// $mail->IsHTML(true);
$mail->Send();
}
public function getDescription(): string
{
return 'action|email|from@email.de|[ReplyName]<reply@email.de>|to@email.de|Mailsubject|Mailbody###name###';
}
}
Bei der Verwendung der action in Kontaktformularen, lassen es die Policies von vielen Hostern nicht mehr zu, daß die from Adresse auf den Wert eines email Feldes des Formulars gesetzt wird. Hier wäre ein zusätzlicher Parameter für eine reply Adresse nützlich, auch wenn das eine gewisse Aufmerksamkeit des Benutzers erfordert, der die Mail beantwortet.
Besonders praktisch, wenn der Wert für den Parameter auch noch optional das Format
NAME<MAILADRESSE>
haben kann.Hier wäre der von mir dazu geschriebene Code
` class rex_yform_action_email extends rex_yform_action_abstract {
`