Mail mit Name und E-Mail-Adresse

Everything related to my tutorials or blog posts
Forum rules
Preferred language of discussion is English so most users can profit from your threads, but German is okay as well.

Bevorzugte Sprache ist Englisch, damit möglichst viele Nutzer von den Threads profitieren können, aber Deutsch wird auch akzeptiert.
Post Reply
Klausemann
Posts: 1
Joined: Wed Apr 29, 2015 7:56 am

Mail mit Name und E-Mail-Adresse

Post by Klausemann » Wed Apr 29, 2015 8:06 am

Hallo Christopher,
ich bin als Einsteiger auf dieser Seite fündig geworden und begeistert von dem spamfreien Formular.

Gibt es eine Möglichkeit, dass der Empfänger der Nachricht im Header der zugestellen E-Mail nicht nur die E-Mail-Adresse ($absender), sondern auch dessen Name ($name) angezeigt bekommt?
Z.B. Max Mustermann <max@mustermann.de>
Ich habe den Code wie nachfolgend mit dem Feld .$Name. ergänzt, doch der Name aus dem Kontaktformular wird nicht übertragen:

Code: Select all

// Mail schicken
   @mail($empfaenger,$betreff,$nachricht,'From: '.$name.' '.$absender)
Danke für eine Rückmeldung.
Grüße
Klaus-Peter

Christopher
Site Admin
Posts: 150
Joined: Sat Mar 03, 2012 10:30 pm
Location: Germany

Re: Mail mit Name und E-Mail-Adresse

Post by Christopher » Wed Apr 29, 2015 2:36 pm

Hallo Klaus-Peter,

zunächst musst du die E-mail-Adresse in spitze Klammern stellen:

Code: Select all

@mail($empfaenger,$betreff,$nachricht,'From: '.$name.' <'.$absender.'>')
Dieser Code ist allerdings in dieser Form gefährlich, da er Spam über BCC und CC-Header ermöglicht.
Angenommen ein Abender gibt als Namen folgendes an:
und als Absender-Adresse "service@paypal.com"

Dann wird daraus dieser Mail-Header:
Also eine Mail, die nicht nur an dich, (du stehst in To) sondern auch an user1@example.com, user2@example.com und user3@example.com (im BCC) und service@paypal.com (im CC) geht und service@paypal.com als Absender-Adresse hat. So ermöglichst du es, Angreifern über deinen Server Spam bzw. Phishing zu senden.

Du musst also sicher gehen, das $name keine Kontrollzeichen enthält, welche es ermöglichen weitere Header einzuschleusen. Bei Mails bedeutet das, dass der Name keine Zeilenumbrüche enthalten darf, was ein normaler Name auch nicht tut.
Daher reicht es, die Verarbeitung abzubrechen, wenn ein Zeilenumbruch erkannt wird:

Code: Select all

if (strpos($name,"\n")!==false || strpos($from,"\r"!==false)) die("Error");
@mail($empfaenger,$betreff,$nachricht,'From: '.$name.' <'.$absender.'>')
Viele Grüße,
Christopher
I try to support my users as best as I can.
Please support me and CrazyStat in return. Thanks.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest