max
Erfahrenes Mitglied
Update: Problem mit versenden von Mails via mail() bzw. PHPMailer
Ich hab vor einiger Zeit ein kleines Newslettertool programmiert in dem man ein paar Platzhalter für zB. den Link auf die eingene Seite hat, zusätzlich kann man noch ein Linktracking aktivieren und somit sehen wie oft die Links aus dem Newsletter angeklickt werden.
Beim Linktracking wird der vor dem eigentlichen Link eine Datei auf meinem Webserver aufgerufen und dann wird der Benutzer automatisch via Header Weiterleitung auf die eigentliche Seite geschickt.
Für das ganze habe ich folgende Funktion zum parsen der HTML Mail geschrieben:
Nun habe ich folgendes Problem: Beim ersten Versenden des Newsletters funktioniert alles noch einwandfrei, nur wenn ich den bereits gesendeten Newsletter im CMS wieder bearbeite und erneut versende wird mir beim preg_match für das Linktracking "! " (-> Ausrufezeichen + Leerzeichen) irgendwo im Link teilweise sogar in der Nachricht eingefügt.
Ich weiß einfach nicht woher das kommen könnte.
Ich hab vor einiger Zeit ein kleines Newslettertool programmiert in dem man ein paar Platzhalter für zB. den Link auf die eingene Seite hat, zusätzlich kann man noch ein Linktracking aktivieren und somit sehen wie oft die Links aus dem Newsletter angeklickt werden.
Beim Linktracking wird der vor dem eigentlichen Link eine Datei auf meinem Webserver aufgerufen und dann wird der Benutzer automatisch via Header Weiterleitung auf die eigentliche Seite geschickt.
Für das ganze habe ich folgende Funktion zum parsen der HTML Mail geschrieben:
PHP:
function parseMail($text,$anrede, $vorname, $nachname, $seitenUrl, $tracking=0, $n_id='', $u_id='', $c_id='') {
$datum = date("d.m.Y");
$zeit = date("G:i");
$seitenlink = '<a href="'.$seitenUrl.'" target="_blank">'.$seitenUrl.'</a>';
$linkPattern = ',<a([^>]+)href="((http://|https?://|ftp://)([^>"\s]+))([^>]+)>([^<]+)(</a>),i';
if($tracking==1) {
$info = base64_encode($n_id)."|".base64_encode($u_id)."|".base64_encode($c_id);
$info = rawurlencode($info);
$linktracking = '<a href="http://www.meinserver.com/email/inc/go_link.php?info='.$info.'&to=\2" target="_blank">\6\7';
}
else {
$linktracking = '<a href="\2" target = "_blank">\6\7';
}
$text = checkQuotes($text);
$suche = array(
'{\{ANREDE\}}',
'{\{VORNAME\}}',
'{\{NACHNAME\}}',
'{\{DATUM\}}',
'{\{ZEIT\}}',
'{\{SEITENLINK\}}',
$linkPattern
);
$ersetze = array(
$anrede,
$vorname,
$nachname,
$datum,
$zeit,
$seitenlink,
$linktracking
);
$msg = preg_replace($suche, $ersetze, $text);
return $msg;
}
Nun habe ich folgendes Problem: Beim ersten Versenden des Newsletters funktioniert alles noch einwandfrei, nur wenn ich den bereits gesendeten Newsletter im CMS wieder bearbeite und erneut versende wird mir beim preg_match für das Linktracking "! " (-> Ausrufezeichen + Leerzeichen) irgendwo im Link teilweise sogar in der Nachricht eingefügt.
Ich weiß einfach nicht woher das kommen könnte.
Zuletzt bearbeitet: