Hallo liebe Gemeinde,
vielleicht kann mir wer helfen:
Für ein Registrierungsformular muß ich im Antwortmail einen aus der Email Adresse generierten Code bekanntgeben.
Ich wollte das über einen Hook in Powermail erledgine, aber es gelingt mir einfach absolut nicht dem markerArray irgend etwas "unterzuschieben".
Was ich probiert habe bisher:
1. unter "Email Text for Sender" habe ich (neben anderem Text) "###POWERMAIL_ITEMS_SERIAL###" reingeschrieben.
2. ich hab eine Extension geschrieben mit folgendem Inhalt:
function PM_FieldMarkerArrayHook(&$markerArray, $formValues, $k, $v, $kv, $vv, $obj) {
$markerArray['###POWERMAIL_ITEMS_SERIAL###'] = 'TEST';
}
leider bleibt das Mail an der Stelle des Markers immer leer 🙁
Ich hab auch schon andere Hooks versucht:
PM_SubmitEmailHook, PM_SubmitBeforeMarkerHook, ...
leider ebenfalls ohne Erfolg.
Die Funktion selbst wird jedenfalls aufgerufen (mit ein paar "echos" getestet), aber der Marker wird einfach partout nicht gefüllt ... vielleicht kann mir hier jemand helfen.
thx
gipsy
Sieht eigentlich nicht schlecht aus, aber um eine genauere Aussage treffen zu können, müsste ich mir das selbst einmal ansehen.
Hallo,
danke für die Antwort, brauchst du irgendwas von mir, soll ich dir meine "Extension" schicken?
Danke
gipsy schrieb
danke für die Antwort, brauchst du irgendwas von mir, soll ich dir meine "Extension" schicken
Dafür fehlt mir leider die Zeit.
Schnelle Idee:
Nimm einen Dynamischen Marker und eine userFunc hierfür:
#77031
An diesem Beispiel wird an einem Marker auch etwas über PHP ausgegeben
Danke nochmal,
das Problem mit der Zeit kenn ich irgendwoher 🙂
aber danke für den Tipp, mit der userFunc funktioniert soweit einwandfrei, jetzt bräucht ich nur noch einen zweiten Tipp, wie ich in der userFunc an die Emailadresse des "Ausfüllers" herankommen kann, da ich diese unbedingt für die generierung der Nummer benötige.
Herzlichen Dank und Kompliment für die super extension und den tollen Support!
gipsy schrieb
wie ich in der userFunc an die Emailadresse des "Ausfüllers" herankommen kann, da ich diese unbedingt für die generierung der Nummer benötige.
Übergib der userFunc die tt_content uid und die Powermail Feld uid und dann holst du dir den Wert ganz einfach aus der Session
OK, danke nochmals für die Hilfe, nachdem ich das ganze doch eher generisch machen wollte habe ich jetzt nochmal gegraben, warum das mit dem Hook nicht funktioniert hat.
Eigentlich ist die Antwort ganz einfach 🙂
In "class.tx_powermail_submit.php" wird erstmal der Allgemeine "RTE" marker durch den Inhalt des RTE ersetzt. Anschließend läuft noch der dynamicMarker drüber und dann werden alle verbleibenden Marker gelöscht.
Dann werden die "maildata" Werte gesetzt und der Hook "PM_SubmitEmailHook" aufgerufen.
In dem Moment sind natürlich keine Marker mehr vorhanden, welche irgendwie ersetzt werden könnten, außerdem wird nachdem Hook keine Markerersetzung mehr durchgeführt.
Ich hab das Ganze jetzt so gelöst, daß ich das Entfernen der Marker nachden Hook gesetzt habe und direkt davor noch mal die Marker ersetze:
function sendMail($subpart) {
// Configuration
$this->subpart = $subpart;
$this->markerArray = $this->markers->GetMarkerArray($this->subpart); // Fill markerArray
$this->tmpl['emails'][$this->subpart] = $this->pibase->cObj->getSubpart($this->tmpl['emails']['all'],'###POWERMAIL_'.strtoupper($this->subpart).'###'); // Content for HTML Template
$this->mailcontent[$this->subpart] = $this->pibase->cObj->substituteMarkerArrayCached(trim($this->tmpl['emails'][$this->subpart]),$this->markerArray); // substitute markerArray for HTML content
$this->mailcontent[$this->subpart] = $this->dynamicMarkers->main($this->conf, $this->pibase->cObj, $this->mailcontent[$this->subpart]); // Fill dynamic locallang or typoscript markers
//$this->mailcontent[$this->subpart] = preg_replace("|###.*?###|i","",$this->mailcontent[$this->subpart]); // Finally clear not filled markers
$this->maildata = array();
// Set emails and names
if ($this->subpart == 'recipient_mail') { // default settings: mail to receiver
$this->maildata['receiver'] = $this->MainReceiver; // set receiver
$this->maildata['sender'] = $this->sender; // set sender
$this->maildata['subject'] = $this->subject_r; // set subject
$this->maildata['sendername'] = !empty($this->username) ? $this->username : $this->sender; // set sendername (if not exists, take email)
$this->maildata['cc'] = (isset($this->CCReceiver) ? $this->CCReceiver : ''); // carbon copy (take email addresses or nothing if not available)
} elseif ($this->subpart == 'sender_mail') { // extended settings: mail to sender
$this->maildata['receiver'] = $this->sender; // set receiver
$this->maildata['sender'] = (isset($this->conf['email.']['overwritesender']) && t3lib_div::validEmail($this->conf['email.']['overwritesender']) ? $this->conf['email.']['overwritesender'] : $this->MainReceiver); // set sender email address (take from ts or from first receiver)
$this->maildata['subject'] = $this->subject_s; // set subject
$this->maildata['sendername'] = (isset($this->sendername) ? $this->sendername : $this->MainReceiver); // set sendername
$this->maildata['cc'] = ''; // no cc
}
$this->hook_submit_changeEmail(); // Last chance to manipulate the mail via hook
$this->mailcontent[$this->subpart] = $this->pibase->cObj->substituteMarkerArray($this->mailcontent[$this->subpart],$this->markerArray); // substitute markerArray for HTML content
$this->mailcontent[$this->subpart] = preg_replace("|###.*?###|i","",$this->mailcontent[$this->subpart]); // Finally clear not filled markers
$this->debug($this->subpart); // Debug output
Ich hoffe, daß das keine anderen Sachen ruiniert, aber in meinem Fall tut's jetzt endlich wie's soll 🙂
THX