Warum registrieren? Nur als registriertes Mitglied vom ABAKUS Forum hast Du vollen Zugriff auf alle Funktionen unserer Website.

Kontaktformular PHP

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
ProfiSchnell
PostRank 1
PostRank 1
Beiträge: 16
Registriert: 15.07.2009, 10:22
Wohnort: Hamburg

Beitrag von ProfiSchnell » 30.06.2010, 16:15

Hallo Ihr Profis,

ich habe ein Problem ich habe ein PHP Kontaktormular welches auf einem Server (Linux) normal läuft, nun möchte ich es auf unseren Windowsserver 2003 64 bit verwenden. PHP habe ich installiert nun sagt er mir beim benutzen folgende fehler aus:

Warning: fread(): supplied argument is not a valid stream resource in C:\xxx on line 251

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\xxx on line 268

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in C:\xxx 269

Ich habe im sendmail_from die E-Mailadresse eingegeben.

Es klappt leider trotzdem nicht.

Ich würde mich sehr auf eine positive Nachricht freuen.

anbei das komplette Script:


__________________________

<?php
echo '<head>
<title>KONTAKTFORMULAR</title>

</head>';
//Fehlerbehandlung
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$_POST[Mail])){$fehler=1;
echo'<center><font class=text>Die von Ihnen angegebene Mailadresse ist ung&uuml;ltig.</font><br>';}

if($_POST[Nachname]==''){$fehler=1;
echo'<center><font class=text>Sie haben keinen Nachnamen eingegeben.</font><br></center>';}

if($_POST[Telefon]==''){$fehler=1;
echo'<center><font class=text>Sie haben keinen Telefon eingegeben.</font><br></center>';}
/*
if($Ausgangssprache==''){$fehler=1;
echo'<center><font class=text>Sie haben keine Ausgangssprache eingegeben.</font><br></center>';}


if($Zielsprache==''){$fehler=1;
echo'<center><font class=text>Sie haben keine Zielsprache eingegeben.</font><br></center>';}

if($Liefertermin==''){$fehler=1;
echo'<center><font class=text>Sie haben keine Liefertermin eingegeben.</font><br></center>';}
*/
if($fehler==1){echo '<br><a class=link href=javascript:history.back()>Zurück</a>';}

// Erstelle Nachricht
$Nachricht = "$_POST[FormularName] aus dem Formular der Webseite:\r
******************************************* \r
Filiale: $_POST[Filiale] \r
******************************************* \r
Stammdaten des Kunden \r
Anrede: $_POST[Anrede] \r
Name : $_POST[Vorname] $_POST[Nachname] \r
Firma: $_POST[Firma] \r
$_POST[Strasse] $Hausnummer \r
$_POST[PLZ] $_POST[Ort] \r
Telefon: $_POST[Telefon] \r
Telefax: $_POST[Fax] \r
E-Mail: $_POST[Mail] \r
******************************************* \r
$_POST[FormularName]: \r
Fachbereich: $_POST[Fachbereich] \r
Fachkenntnis: $_POST[Fachkenntnis] \r
Ausgangssprache: $_POST[Ausgangssprache] \r
Zielsprache: $_POST[Zielsprache] \r
Liefertermin: $_POST[Liefertermin] gewünschte Uhrzeit: $_POST[Uhrzeit] \r
Dolmetschort: $_POST[DolOrt] \r
******************************************* \r
Firmenunterricht: \r
Firma, Ort: $_POST[FirmenOrt] \r
Datum: $_POST[Datum] \r
Anz. Teilnehmer: $_POST[Teilnehmerzahl] \r
Dauer: $_POST[Dauer] \r
Sprache: $_POST[Sprache] \r
******************************************* \r
Weitere Informationen des Kunden (Beschreibung / Kommentar:) \r
$_POST[Beschreibung] \r
******************************************* \r
\r
+++ Ende der Daten +++ \r ";



// Hier die eMails �berpr�fen
if($_POST[Filiale]=='Bochum'){$Zielmail = '5@web.de'; }
if($_POST[Filiale]=='Hamburg'){$Zielmail = '6@web.de';}
if($_POST[Filiale]=='Kiel'){$Zielmail = '7@web.de';}
if($_POST[Filiale]=='Bremen'){$Zielmail = '8@web.de'; }
if($_POST[Filiale]=='Frankfurt'){$Zielmail = '9@web.de';}
if($_POST[Filiale]=='Madrid'){$Zielmail = "4@web.de'';}
if($_POST[Filiale]=='Muenchen'){$Zielmail = '3@web.de'';}
if($_POST[Filiale]=='Wien'){$Zielmail = '2@web.de'';}
if($_POST[Filiale]=='Duesseldorf'){$Zielmail = '1@web.de';}




//var_dump($_POST);
if($fehler!=1){

//$Zielmail = "4@web.de";

//-- AB JETZT --
$empfaenger = $Zielmail; // Empfänger E-Mail Adresse
$betreff = $_POST[FormularName]." aus dem Internet"; // Betreff

$dateiname = $_FILES['datei']['tmp_name']; // Dateiname
$dateiname_mail = $_FILES['datei']['name'];

$id = md5(uniqid(time()));
$dateiinhalt = fread(fopen($dateiname, "r"), filesize($dateiname));

// Absender Name und E-Mail Adresse
$kopf = "From: Anfrageformular <".$_POST[Nachname].">\n";
$kopf .= "MIME-Version: 1.0\n";
$kopf .= "Content-Type: multipart/mixed; boundary=$id\n\n";
$kopf .= "This is a multi-part message in MIME format\n";
$kopf .= "--$id\n";
$kopf .= "Content-Type: text/plain\n";
$kopf .= "Content-Transfer-Encoding: 8bit\n\n";
$kopf .= $Nachricht; // Inhalt der E-Mail (Body)
$kopf .= "\n--$id";
// Content-Type: image/gif, image/jpeg, image/png » MIME-Typen - selfHtml.org
$kopf .= "\nContent-Type: ".$_FILES['datei']['type']."; name=$dateiname_mail\n";
$kopf .= "Content-Transfer-Encoding: base64\n";
$kopf .= "Content-Disposition: attachment; filename=$dateiname_mail\n\n";
$kopf .= chunk_split(base64_encode($dateiinhalt));
$kopf .= "\n--$id--";
mail($empfaenger, $betreff, "", $kopf); // E-Mail versenden
mail("anfrage@web.de", $betreff, "", $kopf); // E-Mail versenden

//mail($Zielmail, $_POST[FormularName]." aus dem Internet", $Nachricht ,"From: Anfrageformular <$_POST[Nachname]>");
//-- AB JETZT --

echo'<body>';

echo'<br><br><center><font class=ueber1>Vielen Dank für Ihre Anfrage, wir werden Ihre Anfrage so schnell wie möglich bearbeiten. </br></br> Unternehmen gmbh</font></br></br><center><a class=link href=javascript:history.go(-2)>Zurück</a>';
}
?>


Indira-Nova
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 14.04.2019, 16:48

Beitrag von Indira-Nova » 14.04.2019, 17:28

Hello :))

ich hab da auch ein Problem an dem ich seit Tagen dran bin, nun habe ich mir überlegt mich an euch Profis zu wenden. Ich trage da meine Email (von Webseite) ein, und online gibts immer den Fehler an "das die contactform.php" nicht konfiguriert ist. Server unterstützt php und Version 7

Ich kopier da mal den original Code ein evtl weiss Jemand von euch was da genau eingegeben werden muss das es auch funkioniert:

<?php
/*
PHP contact form script
Version: 1.1
Copyrights BootstrapMade.com
*/

/***************** Configuration *****************/

// Replace with your real receiving email address
$contact_email_to = "contact@example.com";

// Title prefixes
$subject_title = "Contat Form Message:";
$name_title = "Name:";
$email_title = "Email:";
$message_title = "Message:";

// Error messages
$contact_error_name = "Name is too short or empty!";
$contact_error_email = "Please enter a valid email!";
$contact_error_subject = "Subject is too short or empty!";
$contact_error_message = "Too short message! Please enter something.";

/********** Do not edit from the below line ***********/

if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die('Sorry Request must be Ajax POST');
}

if(isset($_POST)) {

$name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
$email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
$subject = filter_var($_POST["subject"], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
$message = filter_var($_POST["message"], FILTER_SANITIZE_STRING);

if(!$contact_email_to || $contact_email_to == 'contact@example.com') {
die('The contact form receiving email address is not configured!');
}

if(strlen($name)<3){
die($contact_error_name);
}

if(!$email){
die($contact_error_email);
}

if(strlen($subject)<3){
die($contact_error_subject);
}

if(strlen($message)<3){
die($contact_error_message);
}

if(!isset($contact_email_from)) {
$contact_email_from = "contactform@" . @preg_replace('/^www\./','', $_SERVER['SERVER_NAME']);
}

$headers = 'From: ' . $name . ' <' . $contact_email_from . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $email . PHP_EOL;
$headers .= 'MIME-Version: 1.0' . PHP_EOL;
$headers .= 'Content-Type: text/html; charset=UTF-8' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion();

$message_content = '<strong>' . $name_title . '</strong> ' . $name . '<br>';
$message_content .= '<strong>' . $email_title . '</strong> ' . $email . '<br>';
$message_content .= '<strong>' . $message_title . '</strong> ' . nl2br($message);

$sendemail = mail($contact_email_to, $subject_title . ' ' . $subject, $message_content, $headers);

if( $sendemail ) {
echo 'OK';
} else {
echo 'Could not send mail! Please check your PHP mail configuration.';
}
}
?>[code][/code]

staticweb
PostRank 9
PostRank 9
Beiträge: 1210
Registriert: 04.05.2016, 14:34

Beitrag von staticweb » 14.04.2019, 17:41

Hier hast du eine funktionierende E-Mail-Adresse eingetragen?

$contact_email_to = "contact@example.com";

Schreibe hier mal hartkodiert die Werte rein und teste ob es so geht. Rest auskommentieren.

$sendemail = mail( $contact_email_to, $subject_title . ' ' . $subject, $message_content, $headers );

if( $sendemail ) {
echo 'OK';
} else {
echo 'Could not send mail! Please check your PHP mail configuration.';
}

Falls es immer noch nicht geht mal die Fehlermeldung aus dem error.log posten.

Indira-Nova
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 14.04.2019, 16:48

Beitrag von Indira-Nova » 14.04.2019, 17:47

als erstes danke dir für die antwort :))

ja die ist eingetragen, fehler:

The contact form receiving email address is not configured!

obwohl ich nachgeschaut habe, die habe ich auch eingetragen

weiss nicht obs an der linie liegt:

$contact_email_from = "contactform@" . @preg_replace('/^www\./','', $_SERVER['SERVER_NAME']);

die ist so wie es hier ist

staticweb
PostRank 9
PostRank 9
Beiträge: 1210
Registriert: 04.05.2016, 14:34

Beitrag von staticweb » 14.04.2019, 17:53

> ja die ist eingetragen

Nein ist sie nicht!

if( !$contact_email_to || $contact_email_to == 'contact@example.com' ) {
die( 'The contact form receiving email address is not configured!' );
}

Indira-Nova
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 14.04.2019, 16:48

Beitrag von Indira-Nova » 14.04.2019, 18:03

juheee es hat geklappt :)))) danke dir von herzen!!! :)))

Indira-Nova
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 14.04.2019, 16:48

Beitrag von Indira-Nova » 14.04.2019, 18:16

es hat soweit geklappt das die gesendet werden, jedoch kein empfang

nerd
PostRank 10
PostRank 10
Beiträge: 4054
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 14.04.2019, 23:46

Das passiert, weil deine header falsch gesetzt sind. Wenn du die email von mein-server.de sendest, dann muss im email header auch FROM: no-reply@mein-server.de oder dergleichen stehen, und nicht irgendeine fremde email adresse ueber die du keine kontrolle hast - ansonsten wird die email beim empfaenger entweder gar nicht oder in den spam-ordner zugestellt.

Die email die der benutzer in deinem formular angegeben hat gehoert ins "Reply-To:" feld, nicht ins "From:" feld.

staticweb
PostRank 9
PostRank 9
Beiträge: 1210
Registriert: 04.05.2016, 14:34

Beitrag von staticweb » 15.04.2019, 07:55

> es hat soweit geklappt das die gesendet werden, jedoch kein empfang

Bist du sicher das alles geklappt hat? Wurde tatsächlich "OK" angezeigt nach dem senden?

Es kann durchaus möglich sein, dass es je nach E-Mail-Adresse ohne SMTP-Authentifizierung gar nicht funktioniert.

Antworten