Ein paar fragen zum Emailversand

  • Ein paar fragen zum Emailversand

    Hallo Leute,

    also.. ich hab mal wieder ein paar Fragen ;)

    Fall 1:
    Es sollen vom System einige Emails verschickt werden können, zum beispiel bei der Registrierung (eine validierungsmail), wenn jemand seine Daten ändert usw.
    Die Emailtexte sollen in einer Konfigurationsdatei liegen, um sie zur laufzeit schnell und einfach ändern zu können.
    So.. nun hat der Benutzer die Wahl zwischen Html-Mails und reine Text-mails.
    Sollte er HTML Emails haben wollen, will ich nicht den ganzen HTML-kram + css einbindung usw. in die Config packen sondern würde es (am liebsten) so lösen das man eine art Template einbindet und dieses mit den jeweiligen Daten bestückt.
    Wie geht sowas bzw. wie würdet ihr das lösen?
    Es gibt ja son paar Template Systeme aber lohnt es sich nur für den Emailversand ein solches zu installieren? Wäre das nicht etwas übertrieben?
    Bin mir nicht so ganz schlüssig wie ich das realisieren kann.

    Fall 2:
    Der Benutzer kann, bei der Registration, seine Emailadresse eintragen.
    Nehmen wir mal an der Benutzer ist irgendwie mies und trägt in das fällt sowas wie BCC:<mail> usw. ein (hieß doch so oder?).
    Das würde ich gerne unterbinden, gibt es da evtl. in der Mail Klasse von PHP eine möglichkeit dieses zu unterbinden?

    Ich danke euch, mal wieder :)

    Thimo
  • Zu Fall 1:
    Ein Template-System nur für die Trennung von 2 verschiedenen Logiken finde ich persönlich auch etwas übertrieben. Unterscheiden sich die beiden Typen nur in der Formatierung oder sind alle sichtbaren Texte exakt gleich?

    Zu Fall 2:
    Überprüfe doch einfach die E-Mail auf Gültigkeit.

    Quellcode

    1. $email = 'username@isp.tld';
    2. if (!preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $email)) {
    3. echo 'E-Mail weist kein gültiges Format auf!';
    4. }
    MfG dynambee
  • Nunja, die heißen eben so, wie Du sie benennst.

    PHP-Quellcode

    1. $email = file_get_contents("email-template.html");
    2. $arrayFelder = array(
    3. "feldname" => "feldwert"
    4. );
    5. foreach($arrayFelder as $feldname => $feldwert){
    6. $email = str_replace("{".$feldname."}",$feldwert,$email);
    7. }
    8. mail(...);
    Alles anzeigen


    In diesem Beispiel würdest Du die Platzhalter in geschweifte Klammern einsetzen, z.B.: {platzhalter} - Das kannst Du Dir aber natürlich anpassen wie Du willst.
  • philippgerard schrieb:

    Nunja, die heißen eben so, wie Du sie benennst.

    PHP-Quellcode

    1. $email = file_get_contents("email-template.html");
    2. $arrayFelder = array(
    3. "feldname" => "feldwert"
    4. );
    5. foreach($arrayFelder as $feldname => $feldwert){
    6. $email = str_replace("{".$feldname."}",$feldwert,$email);
    7. }
    8. mail(...);
    Alles anzeigen


    In diesem Beispiel würdest Du die Platzhalter in geschweifte Klammern einsetzen, z.B.: {platzhalter} - Das kannst Du Dir aber natürlich anpassen wie Du willst.


    Ja super:)

    Ich danke euch vielmals :)

    Irgendwann bin ich auch mal ein guter PHPler *träum* *g*

    Bis denne :)
  • Zu Fall 2:

    dynambee schrieb:


    Quellcode

    1. $email = 'username@isp.tld';
    2. if (!preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $email)) {
    3. echo 'E-Mail weist kein gültiges Format auf!';
    4. }


    Das schützt aber nur davor, dass der Benutzer kein falsches eMail-Format angibt z.B. werner.t-online.de (@-Zeichen fehlt, also ungültig).
    Heißt aber lange noch nicht, dass dies die richtige eMail Adresse des Users ist. Wurde zudem noch einen Aktivierungscode mit verschicken, der in der Datenbank gespeichert wird und mit dem eingegebenen Code des Benutzers(Der den Code erhält, sofern die eMail-Adresse stimmt) verglichen wird.


    Grüße
    Sebastian alias Exotelis
  • Exotelis schrieb:

    Zu Fall 2:

    dynambee schrieb:


    Quellcode

    1. $email = 'username@isp.tld';
    2. if (!preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $email)) {
    3. echo 'E-Mail weist kein gültiges Format auf!';
    4. }


    Das schützt aber nur davor, dass der Benutzer kein falsches eMail-Format angibt z.B. werner.t-online.de (@-Zeichen fehlt, also ungültig).
    Heißt aber lange noch nicht, dass dies die richtige eMail Adresse des Users ist. Wurde zudem noch einen Aktivierungscode mit verschicken, der in der Datenbank gespeichert wird und mit dem eingegebenen Code des Benutzers(Der den Code erhält, sofern die eMail-Adresse stimmt) verglichen wird.


    Grüße
    Sebastian alias Exotelis



    Japp, für genau den Zweck ist es gedacht :)

    Danke für eure Hilfe!