Absender bei Email-Formular

Guten Abend

Ich habe mir ein Formular zusammen gestellt. Wenn ich dieses nun ausfülle und absende, klappt bis auf den Absender alles wunderbar. Anstelle des vom Benutzer eingegebenen Namens wird als Absender bplaced.net <no-reply_soulxcore_report-spam-to@bplaced.net angezeigt. Der eigentliche Absender steht in der Mail als Nachricht oberhalb des eigentlichen Mail-Inhalts.

Was ist da falsch?

Grüsse

Hi,

unsere Glaskugel ist leider kaputt - daher können wir dir ohne Code nicht weiterhelfen - wenn du deinen Code allerdings hier postest, könnten wir sicherlich mal drüberschauen :slight_smile:

Wenn das vom hiesigen server abgesendet wird, ist ja dieser der Absender und nicht das, was
derjenige behauptet, wer der Absender sei.
Von daher sieht das doch sehr plausibel aus.

Ich bekomme öfter mal Rückmeldungen, daß andere Leute offenbar eine meiner email-Adressen
fälschlich als Absender verwenden, um spam zu versenden - der spam-Filter schickt dann
allerdings fehlerhafter Weise an mich eine Rückmeldung darüber, daß das blockiert wurde und
nicht dem eigentlichen Betreiber des servers, der es erlaubt, gefälschte Absender-Adressen
zu verwenden. Von daher wäre es schlecht für bplaced, wenn man einfach Absender-Adressen
fälschen könnte - solche server kommen dann recht schnell auf die spam-Liste und werden
pauschal blockiert und herausgefiltert.
Das jeweilige Formularfeld kann der Absender des Formulars ja ruhig ausfüllen, dann kann man
ja sehen, wohin eine Antwort gesendet werden soll - ob das die des Ausfüllers des Formulars
ist oder eine beliebige, kann man natürlich nicht erkennen.

hi,

@hoffmann: natürlich ist ein beliebiger absender möglich

lg

Guten Morgen

Tut mir leid, hier natürlich der Code.

formular.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
	<title>Formular</title>
	<link rel="stylesheet" type="text/css" href="style.css"></head>
<script type="text/javascript">
function chkFormular() {
  if (document.Formular.name.value == "") {
    alert("Das Feld 'Name' wurde nicht korrekt ausgefüllt. Bitte geben Sie Ihren Namen ein.");
    document.Formular.name.focus();
	document.Formular.name.style.backgroundColor = "#FF0000";
    return false;
  }
  if (document.Formular.auswahl.value == "-- Bitte wählen --") {
  alert("Bitte wählen Sie einen Kontaktgrund!");
  document.Formular.auswahl.focus();
  document.Formular.auswahl.style.backgroundColor = "#FF0000";
  return false;
  }
  if (document.Formular.nachricht.value == "") {
  alert("Das Feld 'Nachricht' wurde nicht korrekt ausgefüllt. Bitte verfassen Sie eine Nachricht.");
  document.Formular.nachricht.focus();
  document.Formular.nachricht.style.backgroundColor = "#FF0000";
  return false;
  }
}
</script>
<script type="text/javascript">
document.createElement("article");
document.createElement("footer");
document.createElement("header");
document.createElement("hgroup");
document.createElement("nav");
</script>
<body>
<div class="design">
<h1>Titel</h1>
	<form method="post" action="formular.php" name="Formular" onsubmit="return chkFormular()">
		<div>
			Vor- und Nachname<br />
				<input type="text" name="name"><br /><br />
			User ID
				<input type="text" name="userID"><br /><br />
			Kontaktgrund<br />
				<select name="auswahl">
				<option>-- Bitte wählen --</option>
					<optgroup label="Support">
						<option value="JCS">JCS Applikationen</option>
						<option value="Presento">Presento</option>
						<option value="Drucker">Drucker</option>
						<option value="Office">Office</option>
						<option value="Hardware">Hardware</option>
						<option value="Sonstiges">Sonstiges</option>
					</optgroup>
					<optgroup label="Bestellungen">
						<option value="Toner">Tonerbestellung</option>
						<option value="Berechtigungen">Antrag Berechtigungen</option>
					</optgroup>
				<select><br /><br />
			Nachricht<br />
				<textarea name="nachricht"></textarea><br><br />
			<input type="submit" name="Button" value="Senden" class="buttons">
			<input type="reset" name="Reset" value="Löschen" class="buttons">
				<br />
				<br />
		</div>
	</form>
</div>
</body>
</html>

formular.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
	<title>Formular</title>
	<link rel="stylesheet" type="text/css" href="style.css"></head>
</head>
<body>
<div class="design">
	<?php	
		if ($_POST['nachricht']) {

		mail("ZIELADRESSE",$_POST['auswahl'],$_POST['nachricht'],"DIESER ABSENDER HIER SOLL ANGEZEIGT WERDEN");

		echo "Danke für ihre Angaben!<br>";
		echo "Name: $_POST[name]<br>";
		echo "Deine Wahl: $_POST[auswahl]<br>";
		echo "Nachricht: $_POST[nachricht]<br><br>";	 
		echo "Wir werden uns bei Klärungsbedarf bei Ihnen melden.";
	}
		else {
			// hier findet die Fehlerbehandlung statt, falls das Formular nicht korrekt gesendet werden konnte. Meldung ausgeben usw...
			echo "Fehler bei der Übermittlung ihrer Angaben, wenden sie sich bitte per Email an XYZ.<br>";
		}
?>
</div>
</body>
</html>

EDIT:
Wenn ich im Formular das Namen-Feld in ein Emailfeld ändere und die Variable $_POST[‘email’] als Absender übergebe, kommt die Email mit der eingegebenen Email als Absender richtig an.

Wenn ich aber das Namenfeld übergebe und als Absender “FROM: " . $_POST[‘name’] nehme, erhalte ich eine Email von "meinname@server3.bplaced.net”.

Grüsse

Ryon_ - klar, das oberflächliche Fälschen von email-Absendern geht bei mail.servern mit
mangelhafter Kontrolle schon, allerdings kann man im header der email als Empfänger immer
sehen, daß da manipuliert wurde.
Wenn der hiesige mail-server server3.bplaced.net heißt, sollte er auch nur Absender mit dieser
Adresse akzeptieren - oder eben von anderen bplaced-Rechnern, wenn er kontrollieren kann,
daß es dort einen solchen Absender gibt. Ansonsten ist das Absenden mit anderen Angaben
natürlich gegebenenfalls sowas wie ein Betrugsversuch, denn der server kann ja gar nicht
beurteilen, ob die Angaben korrekt sind - jeder kann da ja sonst auch deine email-Adresse
angeben, um dich und soulxcore zu ärgern ;o)

Entsprechend, wie man auch in der Beschreibung von mail nachlesen kann:
de2.php.net/manual/de/function.mail.php
from taucht da als Parameter erstmal gar nicht auf, man kann das allenfalls als zusätzliche
header-Information mitschicken, das sollte dann aber keinen Einfluß darauf haben, mit
welchem Abesender der mail-server die email losschickt, sondern allenfalls, was bei der
Darstellung des email-Programmes zum Vorschein kommt - guckt man dort in den header,
wird aber spätestens klar, zumindest welcher Rechner der richtige Absender ist.

soulxcore - du solltest die eingegebene email wie die anderen Eingaben wie etwa ‘Name’ auch
einfach in der email als Ausgabe notieren, dann wird das auch genau wie die anderen
Eingaben ankommen.
Zudem scheint mir für mail “ZIELADRESSE” keine sinnvolle Angabe für den to-Parameter zu
sein und “DIESER ABSENDER HIER SOLL ANGEZEIGT WERDEN” ist wohl keine sinnvolle
Angabe für den additional_headers-Parameter.
In oben referenzierter Funktionsbeschreibung gibt es auch Beispiele, wie das aussehen sollte.

[quote=“hoffmann”]
soulxcore - du solltest die eingegebene email wie die anderen Eingaben wie etwa ‘Name’ auch
einfach in der email als Ausgabe notieren, dann wird das auch genau wie die anderen
Eingaben ankommen.
Zudem scheint mir für mail “ZIELADRESSE” keine sinnvolle Angabe für den to-Parameter zu
sein und “DIESER ABSENDER HIER SOLL ANGEZEIGT WERDEN” ist wohl keine sinnvolle
Angabe für den additional_headers-Parameter.
In oben referenzierter Funktionsbeschreibung gibt es auch Beispiele, wie das aussehen sollte.[/quote]

Kannst du mir bitte kurz ein Beispiel geben, wie du das meinst? Ich verstehe deine Aussage nicht so ganz.

Ich habe die beiden Email-Adressen raus genommen, weil die euch ja quasi nichts angehen und sie hier im Forum durch ZIELADRESSE und DIESER ABSENDER HIER SOLL ANGEZEIGT WERDEN ersetzt. :wink:

Grüsse

Du solltest dir nen captcha zum Schutz vor Spam einbauen

youtube.com/watch?v=mx0-dss8m50&feature=plcp

[quote=“DeusEx2”]Du solltest dir nen captcha zum Schutz vor Spam einbauen

youtube.com/watch?v=mx0-dss8m50&feature=plcp[/quote]

Das Formular kommt ins Intranet, da braucht es doch kein Captcha?

Grüsse

Im Intranet wenn es abgesichert ist braucht es das in der Tat nicht, jedoch ist der bplaced server eigentlich kein Intranet.

Im Intranet wenn es abgesichert ist braucht es das in der Tat nicht, jedoch ist der bplaced server eigentlich kein Intranet.[/quote]

Es ist abgesichert; ich gebe das Formular, wenn es fertig ist, dem Intranet-Zuständigen, der wird das da schon noch überfliegen, bevor er es einbindet.

Ja, ich teste das auch nur hier bei bplaced, weil ich aktuell keinen Zugriff auf den hauseigenen Webserver habe.

Grüsse

Also im Formular sollte erstmal irgendwo ein input stehen, wo die email eingegeben wird, das
könnte hilfreich sein, wenn man sie als Formulareingabe auswerten will:

<label for="mail">email:</label>
<input type="text" id="mail" name="email" />

In formular.php kann man das dann auswerten, also gucken, ob in $_POST[email] eine
email-Adresse drinsteht und dann könnte man das zusammen mit anderen Parametern so
ausgeben:

$nachricht="
Name: $_POST[name]
UserID: $_POST[UserID]
email: $_POST[email] 
Auswahl:  $_POST[auswahl]
Nachricht: $_POST[nachricht]
";
mail('benutzer@example.com', 'Formular', $nachricht);

benutzer@example.com ist dann natürlich durch eine geeignete Adresse zu ersetzen, also
deine wohl und ‘Formular’ durch einen relevanten Betreff.

[quote=“hoffmann”]Also im Formular sollte erstmal irgendwo ein input stehen, wo die email eingegeben wird, das
könnte hilfreich sein, wenn man sie als Formulareingabe auswerten will:

<label for="mail">email:</label>
<input type="text" id="mail" name="email" />

In formular.php kann man das dann auswerten, also gucken, ob in $_POST[email] eine
email-Adresse drinsteht und dann könnte man das zusammen mit anderen Parametern so
ausgeben:

$nachricht="
Name: $_POST[name]
UserID: $_POST[UserID]
email: $_POST[email] 
Auswahl:  $_POST[auswahl]
Nachricht: $_POST[nachricht]
";
mail('benutzer@example.com', 'Formular', $nachricht);

benutzer@example.com ist dann natürlich durch eine geeignete Adresse zu ersetzen, also
deine wohl und ‘Formular’ durch einen relevanten Betreff.[/quote]

Habe das Ganze nun anders gelöst und es funktioniert nun.

<?php
$mailTo = 'Zieladresse';
$mailFrom = '"BLABLA" <bla@bla.ch>';
$mailSubject    = $_POST['Betreff'];
$returnPage = 'DankeMail.html';
$returnErrorPage = 'FehlerMail.html';
$mailText = "";
if(isset($_POST)) { 
   foreach($_POST as $name => $value) {
      if(is_array($value)) {
          $mailText .= $name . ":\n";
          foreach($valueArray as $entry) {
             $mailText .= "" . $value . "\n";
          }
      }
      else {
          $mailText .= $name . ": " . $value . "\n";
      }
   }
}
 if(get_magic_quotes_gpc()) {
     $mailtext = stripslashes($mailtext);
 }
$mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);
if($mailSent == TRUE) {
   header("Location: " . $returnPage);
}
else {
   header("Location: " . $returnErrorPage);
}
exit();
?>

Danke für eure Hilfe!

Grüsse