[erledigt] PHPMailer und Variablen mitschicken (wenn diese vorhanden sind)

godlike

Warp drölf
Veteran
Registriert
13 Juli 2013
Beiträge
14.290
Ort
Topkekistan
Hey,

ich will gerade eine Mail generieren mit der class.phpmailer.php. Funktioniert alles ohne Probleme. Jetzt will ich aber IN die Mail, also in den Inhalt ($mail->Body ="Inhalt";) variable Inhalte einfügen. Der Kunde kann nämlich mehrere Optionen an oder abwählen. Je nach dem ob etwas ausgewählt wurde soll das in der Mail aufgeführt werden oder nicht. Die Abfragen dazu habe ich in einer Funktion stehen. Einfach eibinden bringt wohl nix oder?

also so:

[src=php]$mail->Body ="Das ist gewählt worden ".meine_function()." blah blah blub";[/src]

So, wie bekomme ich das jetzt rein?

Die Funktion besteht im Eigentlichen aus ein paar If-Abfragen alla

[src=php]if (isset($_SESSION['auswahl1'])) {
echo 'Blie blah blubb '.$_SESSION['auswahl1'].' trallalla<br>';
}[/src]

Einen Array erstellen? Sessions anlegen? Danach wieder zerpflücken?

Irgendwie steh ich grad mal wider auf dem Schlauch :D

Gruß godlike
 
Zuletzt bearbeitet:
Re: PHPMailer und Variablen mitschicken (wenn diese vorhanden sind)

Doch, das funktioniert genau so, wie du dir das schon als erstes gedacht hast.

Ganz normal den String zusammen bauen, in Body schreiben und das wars schon.
 
  • Thread Starter Thread Starter
  • #3
Re: PHPMailer und Variablen mitschicken (wenn diese vorhanden sind)

Ok, wenn ich die Funktion so wie in dem Beispiel oben einbaue ist an der Stelle der Mail aber nichts enthalten. Dafür bekomme ich nach dem Abschicken die betreffenden Stellen als Ausgabe unten auf der Seite :confused:
 
Re: PHPMailer und Variablen mitschicken (wenn diese vorhanden sind)

sieht die Funktion so aus?
PHP:
Expand Collapse Copy
... meine_function() {

if (isset($_SESSION['auswahl1'])) {
        echo 'Blie blah blubb '.$_SESSION['auswahl1'].' trallalla<br>';
    }

}

vllt liegt es dann am "echo"

PHP:
Expand Collapse Copy
... meine_function() {
$str = "";
if (isset($_SESSION['auswahl1'])) {
        $str .= 'Blie blah blubb '.$_SESSION['auswahl1'].' trallalla<br>';
    }
return $str;
}
 
Re: PHPMailer und Variablen mitschicken (wenn diese vorhanden sind)

Das Problem ist in der Tat, dass du den fraglichen Text mit echo ausgibst, statt ihn als Rückgabewert der Funktion zurückzuliefern.

Abgesehen davon solltest du dich entscheiden, ob du (X)HTML-E-Mails versenden möchtest oder nicht. Grundsätzlich rate ich davon ab, da HTML-E-Mails diverse Nachteile mit sich bringen - u.a. führen sie leicht zu Sicherheitsproblemen, weshalb ihre automatische Anzeige deaktiviert werden sollte, und die HTML-Layout-Engines einiger E-Mail-Clients (speziell Outlook) und Webmail-Interfaces sind sehr stark eingeschränkt. Generierst du HTML-E-Mails, kannst du HTML-Markup wie z.B. `<br>` verwenden, musst jedoch vom Benutzer übergebene Daten mittels htmlspecialchars() maskieren. Generierst du Plain-Text-E-Mails, musst du stattdessen normale Zeilenumbrüche (CR-LF-Sequenzen, "\r\n") erzeugen. Eine Maskierung der vom Benutzer übergebenen Daten ist dann prinzipiell nicht notwendig, dennoch wäre sinnvoll, zumindest deren Länge und Zeichenvorrat zu beschränken, damit Benutzer (und Spam-Bots) das Formular nicht zum Versand weitgehend frei definierbarer E-Mails an dich missbrauchen können.
 
  • Thread Starter Thread Starter
  • #6
Re: PHPMailer und Variablen mitschicken (wenn diese vorhanden sind)

Ach verdammt, das mit dem return ist ja eigentlich logisch :dozey: Das ich das nicht selber gesehen habe...

Die Ausgabe bzw. die Mail soll natürlich Plaintext erfolgen

[src=php]$mail->ContentType = 'text/plain';[/src]

Das <br> hat da in der Ausgabe natürlich nichts zu suchen. Komischerweise funktionieren die Umbrüche in der Mail mit \n wunderbar, außer wenn ich \n in der Funktion nutze

[src=php]$product .= 'Blie blah blubb '.$_SESSION['auswahl1'].' trallalla \n ';[/src]

Hier bekomme ich das "\n" direkt ausgegeben. Bei einer Ausgabe von z.B.

[src=php]$product .= $variable.'\n';[/src]
funktioniert hingegen der Umbruch wunderbar :confused: Auch wenn ich das so in meiner Funktion nutze...

Nachtrag:

Sobald ich folgende Schreibweise nehme, also mit einem "-Zeichen ()Anführungszeichen doppelt an entsprechender Stelle anstatt einem '-Zeichen (Anführungszeichen einfach) funktionieren die Umbrüche.

[src=php]$product .= "Blie blah blubb ".$_SESSION['auswahl1']." trallalla \n";[/src]

Kann mir einer verraten warum? :confused:
 
Zuletzt bearbeitet:
Der Grund dafür ist in dokumentiert. In String-Literalen, welche durch einfache Anführungszeichen (') begrenzt werden, werden ausschliesslich die Escape-Sequenzen \\ (für \) und \' (für ') verarbeitet, während bei Verwendung doppelter Anführungszeichen (") u.a. \r und \n verarbeitet und Variablen expandiert werden.
 
Zurück
Oben