ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
1576
1576
EMPFEHLEN
-
Kann mir jemand den Code sagen für ein Kontakt Formular wo User eine Nachricht an den Webmaster schicken können.
-
Also rein mit HTML wirst Du nicht weit kommen.
Ausser Du nutzt sowas in der Art:
Das setzt aber voraus, dass der User seinen Mailclient konfiguriert hat, denn darueber wird das dann laufen.HTML-Code:<a href="mailto:webmaster@meinekleineschickeseite.de">Mail dem ollen Webmaster!</a>
Ansonsten wirst Du wohl PHP nutzen muessen.
Die Funktion die Dir dabei hilft ist mail().PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
30.07.05 11:29 #3Blümchen Tutorials.de Gastzugang
Hallo,
ich habe eines das geht aber nicht nur mit HTML dafür musst du PHP haben. Wenn ja dann kannst du das nehmen!
Setzte das ganz oben an deine Datei:
So nun kommt das Formular:PHP-Code:<?php
# Maximale Größe des Attachments in Bytes:
$max_attach_size = 500000;
?>
Gruß BlümchenPHP-Code:<?php
if (isset($_POST["form_submitted"]))
{
// übergebene Variablen ermitteln:
$mailadressen = array();
$mailadressen["Privat"] = "XXXX@XXx.de";
$mailadressen["sonstiges"] = "XXXX@XXx.de";
$name = $_POST["vorname"]." ".$_POST["name"];
$email = $_POST["email"];
$subject = $_POST["subject"];
$text = $_POST["text"];
if(isset($mailadressen[$_POST["mailto"]])) {
$mailto = $mailadressen[$_POST["mailto"]];
} else {
die("Keinen gültigen Empfänger ausgewählt!");
}
// Überprüfungen der Daten:
unset($errors);
if ($email != "" and !preg_match("/^[^@]+@.+\.\D{2,5}$/", $email)) $errors[] = "die E-Mail-Adresse sieht nicht richtig aus";
if ($text == "") $errors[] = "es wurde kein Text eingegeben";
if ($_FILES['probe']['size'] > $max_attach_size) $errors[] = "Attachment zu groß (".number_format($_FILES['probe']['size']/1000,0,",","")." KB) - Maximalgröße: ".number_format($max_attach_size/1000,0,",","")." KB";
if (empty($errors))
{
$text = stripslashes($text);
$subject = stripslashes($subject);
if ($name != "") $mail_name=$name; else $mail_name="unbekannt";
if ($subject != "") $mail_subject = $subject; else $mail_subject = "kein Betreff";
if ($email != "") $mail_email = $email; else $mail_email = "XXX@XXx.de";
$ip = $_SERVER["REMOTE_ADDR"];
// Wenn Attachment, dann MIME-Mail erstellen:
if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "")
{
// Datei einlesen und codieren:
$datei_content = fread(fopen($_FILES['probe']['tmp_name'],"r"),filesize($_FILES['probe']['tmp_name']));
$datei_content = chunk_split(base64_encode($datei_content),76,"\n");
// Boundary festlegen:
$boundary = md5(uniqid(rand()));
// Mail-Header:
$mail_header = "From: ".$mail_name." <".$mail_email.">\n";
$mail_header .= "X-Sender-IP: ".$ip."\n";
$mail_header .= "MIME-Version: 1.0\n";
$mail_header .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
$mail_header .= "This is a multi-part message in MIME format.\n";
// Mail-Text:
$mail_header .= "--".$boundary;
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
$mail_header .= "\n\n".$text;
// Attachment:
$mail_header .= "\n--".$boundary;
$mail_header .= "\nContent-Type: ".$_FILES['probe']['type']."; name=\"".$_FILES['probe']['name']."\"";
$mail_header .= "\nContent-Transfer-Encoding: base64";
$mail_header .= "\nContent-Disposition: attachment; filename=\"".$_FILES['probe']['name']."\"";
$mail_header .= "\n\n".$datei_content;
// Ende:
$mail_header .= "\n--".$boundary."--";
// Sende E-Mail und gebe Fehler bzw. Bestaetigung aus
if (@mail($mailto,$mail_subject,"",$mail_header)) $sent = true; else $errors[] = "keine Verbindung zum Mailserver - bitte nochmal versuchen";
}
// kein Attachment, normale E-Mail:
else
{
$mail_header = "From: ".$mail_name." <".$mail_email.">\n";
$mail_header .= "X-Sender-IP: $ip\n";
$mail_header .= "Content-Type: text/plain";
if (@mail($mailto,$mail_subject,$text,$mail_header)) $sent = true; else $errors[] = "keine Verbindung zum Mailserver - bitte nochmal versuchen";
}
// Kopie an Absender:
if (isset($sent) && isset($email) && $email != "" && isset($_POST['copy']))
{
if (isset($_FILES['probe']['name']) && trim($_FILES['probe']['name']) != "") $copy_mail_text = "Kopie der versendeten E-Mail:\n\n".$text."\n\nAttachment: ".$_FILES['probe']['name']; else $copy_mail_text = "Kopie der versendeten E-Mail:\n\n".$text;
$header= "From: ".$mailto."\n";
$header .= "X-Sender-IP: ".$ip."\n";
$header .= "Content-Type: text/plain";
@mail($email, $mail_subject, $copy_mail_text, $header);
}
}
}
if (empty($sent))
{
if(isset($errors))
{
?>
<p align="left" class="caution">Fehler:</p>
<div align="left">
<ul>
<?php foreach($errors as $f) { ?>
<li><?php echo $f; ?></li>
<?php } ?>
</ul>
<br />
<?php
}
?>
</div>
<form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data">
<div>
<div align="left">
<table width="100%" border="0">
<tr>
<td width="23%" height="25"><p>Name: </p></td>
<td width="77%"><p>
<input name="name" type="text" class="chatfields" value="<?php if (isset($name)) echo htmlentities(stripslashes($name)); else echo ""; ?>" size="32" maxlength="255" />
</p></td>
</tr>
<tr>
<td height="29"><p>E-Mail: </p></td>
<td><p>
<input name="email" type="text" class="chatfields" value="<?php if (isset($email)) echo htmlentities(stripslashes($email)); else echo ""; ?>" size="32" maxlength="255" />
(dahin geht die Antwort) </p></td>
</tr>
<tr>
<td height="27"><p>Betreff:</p></td>
<td><p><b>
<input name="subject" type="text" class="chatfields" value="<?php if (isset($subject)) echo htmlentities(stripslashes($subject)); else echo ""; ?>" size="40" maxlength="40" />
</b></p></td>
</tr>
<tr>
<td height="28"> <p>Art der Anfrage :</p></td>
<td><p><b>
<select name="mailto" class="chatfields">
<option>-- bitte auswählen --</option>
<option value="privat">Privat</option>
<option value="sonstiges">Sonstiges</option>
</select>
</b></p></td>
</tr>
<tr>
<td height="105"><p>Nachricht: </p></td>
<td><p>
<textarea name="text" cols="75" rows="6" class="chatfields"><?php if (isset($text)) echo htmlentities(stripslashes($text)); else echo ""; ?>
</textarea>
</p></td>
</tr>
<tr>
<td><p>Attachment: </p></td>
<td><p>
<input name="probe" type="file" class="chatfields" value="<?php if (isset($_POST['probe'])) echo htmlentities(stripslashes($_POST['probe'])); else echo ""; ?>" size="20"/>
</p></td>
</tr>
</table>
</div>
<p align="left">
<input name="form_submitted" type="submit" class="chatfields" value=">>> Absenden" />
<input type="checkbox" name="copy" value="true" />
Kopie an Absender</p>
</div>
</form>
<?php
}
else
{
if (empty($email)) { ?>
<p align="left"><b>Danke!</b><br />
Nachricht erfolgreich versendet. Allerdings wurde keine E-Mail-Adresse angegeben, ich kann also nicht antworten.</p>
<?php }
else { ?>
<p align="left"><b>Danke!</b><br />
Nachricht erfolgreich versendet.</p>
<?php }
}
?>
-
Alternativ zum Beispiel von reptiler biete ich noch folgende Variante:
Empfehlen würde ich aber die Variante von Blümchen.HTML-Code:<form method="get" action="mailto:webmaster@website.tld"> Betreff: <input type="text" name="subject"><br> <textarea name="body"></textarea><br> <button>Senden</button> </form>
Ich gebe keine Garantie darauf, dass meine Skripte funktionieren. Das, was ich in Foren poste, ist oft ungetestet. Trotzdem versuche ich nach bestem Wissen zu programmieren und zu erklären.
-
Ich wuerde auch Bluemchens Variante empfehlen.
Da es sich aber um ein Kontakt-Formular handelt kann das ganze drastisch gekuerzt werden.
In einem Kontakt-Formular haengt man ja in der Regel keine Dateien an, daher kann das weg.
Und @Bluemchen, wenn man schon die Moeglichkeit bietet Dateien an die Mail zu haengen, dann sollte auch mehr als eine moeglich sein.
Da also in einem Kontakt-Formular keine Dateien angehaengt werden (normalerweise) brauchst Du Dich um den ganzen Kram mit den Headern nicht kuemmern.
Somit reicht dies zum versenden einer Mail aus:
kontakt.php
PHP-Code:<html>
<head><title>Kontakt</title></head>
<body>
<?php
if ((isset($_POST['send'])) && (!empty($_POST['fromaddress'])) && (!empty($_POST['subject'])) && (!empty($_POST['text'])))
{
mail("webmaster@meinekleinelustigespassdomain.de",$_POST['subject'],$_POST['text'],"From: ".$_POST['fromaddress']);
}
?>
<form method="post" action="kontakt.php">
Deine eMail-Adresse:<input type="text" name="fromaddress"><br>
Betreff:<input type="text" name="subject"><br>
Nachricht:<textarea name="text"></textarea><br>
<input type="submit" name="send" value="Abschicken">
</form>
</body>
</html>PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
30.07.05 12:18 #6Blümchen Tutorials.de Gastzugang
Hallo reptiler,
ich weiß aber ich habe das bis jetzt leider noch nie hin bekommen, dass ich mehr Daten senden kann ich dachte so an fünf Stück oder so.
Gruß Blümchen
-
Hab ich die Tage auf der Arbeit geschrieben.
Kommt sofort.
Versteht 0 bis endlos viele Anhaenge.
Benoetigt aber die IMAP-Funktionen fuer die Kodierung des Textes.
Wenn die korrekte Zeichenkodierung keine Rolle spielt kann das aber rausgeschmissen werden.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
Bitte schoen:
Kommt demnaechst evtl. auch mal als Tutorial.PHP-Code:<?php
$attachedfiles=array();
$fromaddress="";
$mailto="";
$subject="";
$message="";
if (!empty($_POST))
{
$keys=array_keys($_POST);
for ($count=0;$count<count($keys);$count++)
{
if (substr($keys[$count],0,10)=="attachment")
{
$attachedfiles[]=$_POST[$keys[$count]];
}
}
}
if ((isset($_POST['attachfile'])) || (isset($_POST['removeattachment'])))
{
if (!empty($_POST['mailto']))
{
$mailto=$_POST['mailto'];
}
if (!empty($_POST['subject']))
{
$subject=$_POST['subject'];
}
if (!empty($_POST['message']))
{
$message=$_POST['message'];
}
if (isset($_POST['attachfile']))
{
$tmpname=$_FILES["uploadfile"]["tmp_name"];
$filename=$_FILES["uploadfile"]["name"];
$filesize=$_FILES["uploadfile"]["size"];
if ($filesize>0)
{
move_uploaded_file($tmpname,"mailtemp/".$filename);
$attachedfiles[]=$filename;
}
}
if (isset($_POST['removeattachment']))
{
for ($count=0;$count<count($keys);$count++)
{
if (substr($keys[$count],0,13)=="delattachment")
{
$filename=$_POST[$keys[$count]];
$delpositions[]=substr($keys[$count],13,1);
unlink("mailtemp/".$filename);
}
}
$newattachedfiles=array();
for ($count=0;$count<count($attachedfiles);$count++)
{
if (!in_array($count,$delpositions))
{
$newattachedfiles[]=$attachedfiles[$count];
}
}
$attachedfiles=$newattachedfiles;
unset($newattachedfiles);
}
}
if ((isset($_POST['sendmail'])) && (!empty($_POST['mailto'])) && (!empty($_POST['subject'])) && (!empty($_POST['message'])))
{
$message=imap_8bit($_POST['message']);
$message.="\n\n";
for ($attachment=0;$attachment<count($attachedfiles);$attachment++)
{
$message.="\t".imap_8bit("<<".$attachedfiles[$attachment].">>");
}
$boundary="----".md5(uniqid());
$email="";
$email.="Content-class: urn:content-classes:message";
$email.="\nUser-Agent: reptiler's lustiger mailer";
$email.="\nMIME-Version: 1.0";
if (!empty($attachedfiles))
{
$email.="\nContent-Type: multipart/mixed;\n\tboundary=\"".$boundary."\"";
}
$email.="\nFrom: ".$fromaddress;
$email.="\nX-Priority: 3 (Normal)";
$email.="\nImportance: Normal";
if (!empty($attachedfiles))
{
$email.="\n\n--".$boundary;
}
$email.="\nContent-Type: text/plain;\n\tcharset=\"iso-8859-1\"";
$email.="\nContent-Transfer-Encoding: quotet-printable";
$email.="\n\n".$message;
if (!empty($attachedfiles))
{
$email.="\n\n--".$boundary;
}
for ($attachment=0;$attachment<count($attachedfiles);$attachment++)
{
$file=fopen("mailtemp/".$attachedfiles[$attachment],"r");
$content=fread($file,filesize("mailtemp/".$attachedfiles[$attachment]));
fclose($file);
$encodedfile=chunk_split(base64_encode($content));
$email.="\nContent-Type: application/octet-stream;\n\tname=\"".$attachedfiles[$attachment]."\"";
$email.="\nContent-Transfer-Encoding: base64";
$email.="\nContent-Description: ".$attachedfiles[$attachment];
$email.="\nContent-Disposition: attachment;\n\tfilename=\"".$attachedfiles[$attachment]."\"";
$email.="\n\n".$encodedfile."\n\n--".$boundary;
unlink("mailtemp/".$attachedfiles[$attachment]);
}
if (!empty($attachedfiles))
{
$email.="--";
}
imap_mail($_POST['mailto'],$_POST['subject'],"",$email);
unset($body);
unset($message);
unset($attachedfiles);
$message="";
$attachedfiles=array();
}
echo '<html>';
echo '<body>';
echo '<form method="post" action="sendmail.php" enctype="multipart/form-data">';
echo 'Recipient:<input type="text" name="mailto" value="'.$mailto.'"><br>';
echo 'Subject:<input type="text" name="subject" value="'.$subject.'"><br>';
echo '<textarea name="message">'.$message.'</textarea><br>';
for ($attachment=0;$attachment<count($attachedfiles);$attachment++)
{
echo '<input type="hidden" name="attachment'.$attachment.'" value="'.$attachedfiles[$attachment].'">';
echo '<input type="checkbox" name="delattachment'.$attachment.'" value="'.$attachedfiles[$attachment].'">'.$attachedfiles[$attachment].'<br>';
}
if (count($attachedfiles)>0)
{
echo '<input type="submit" name="removeattachment" value="Remove selected attachments"><br>';
}
echo '<input type="file" name="uploadfile">';
echo '<input type="submit" name="attachfile" value="Attach file"><br>';
echo '<input type="submit" name="sendmail" value="Send eMail">';
echo '</form>';
echo '</body>';
echo '</html>';
?>PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
30.07.05 14:43 #9Blümchen Tutorials.de Gastzugang
Hallo,
danke hab mir das gerade mal angesehen. Ich probiere das heute Abend gleich mal aus, wenn ich das andere alles soweit erledigt habe. Der Tag ist ja noch jung *fg*
Gruß Blümchen
-
Uebrigens, statt imap_mail() kannst Du auch einfach mail() nutzen.
Ich nutze das halt nur weil das ganze Teil eines Webmailers wird, welcher eben auf IMAP basiert.
Und da ich ueberall die IMAP-Funktionen nutze hab ich das auch dort gemacht.PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
-
30.07.05 15:22 #11Blümchen Tutorials.de Gastzugang
Hallo,
ach so wenn ich dich richtig verstanden habe, dann muss ich das gar nicht bei mir einfügen sonder, der hat alles dabei was man braucht oder? Hmm wenn das so ist, dann könntest du dafür mal gut ein Turorial machen.
Gruß Blümchen
-
Das Script laeuft so wie es ist. Es werden halt fuer die Zeichenkodierung die IMAP-Funktionen benoetigt.
Genauer gesagt imap_8bit um als Quotet Printable zu kodieren.
Die Form zum eingeben und hochladen der Anhaenge ist dabei, und im Script findet auch das Absenden statt.
Ist als Tutorial geplant. Vielleicht mach ich's heute noch fertig.Geändert von Dennis Wronka (31.07.05 um 08:15 Uhr)
PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
__________________
EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
__________________
__________________Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
Zitat von Friedrich Nietzsche
Ähnliche Themen
-
Mail Kontakt formular
Von ronpepa im Forum PHPAntworten: 13Letzter Beitrag: 14.10.08, 17:42 -
Kontakt-Formular
Von Sunke im Forum PHPAntworten: 4Letzter Beitrag: 21.10.04, 09:20 -
Kontakt-formular
Von t-z im Forum PHPAntworten: 2Letzter Beitrag: 13.08.04, 14:46 -
Kontakt Formular
Von CyberHill im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 09.07.04, 13:19 -
kontakt formular
Von Bora im Forum HTML-EditorenAntworten: 15Letzter Beitrag: 20.12.01, 13:55





Login




