PHP mail() Datei versenden
Hallo Leute,
ich habe ein kleines PHP Script zum versenden eines Formulars geschrieben/zusammenkopiert (bin leider PHP Anfänger). Das hat bis jetzt sehr gut funktioniert, allerdings muss ich eine Funktion zum Anhängen von Dateien einbauen, er bringt zwar keinen Fehler, allerdings kommt die Mail nicht an. Wird auf einem 1und1 Server gehostet, liegt also vermutlich nicht an einer Einstellung auf dem Server sondern an meinem Code.
Dateigrößen und Dateiformat überprüfung werd ich noch einbauen.
Hier der HTML Code in der gleichen Datei, hier wird aber alles richtig übergeben, wenn ich die Variablen ausgebe zeigt er auch alles an was enthalten sein sollte, auch die Datei.
Ich hoffe das ist nicht zu viel Aufwand.
Viele Grüße aus dem Allgäu
Nico
ich habe ein kleines PHP Script zum versenden eines Formulars geschrieben/zusammenkopiert (bin leider PHP Anfänger). Das hat bis jetzt sehr gut funktioniert, allerdings muss ich eine Funktion zum Anhängen von Dateien einbauen, er bringt zwar keinen Fehler, allerdings kommt die Mail nicht an. Wird auf einem 1und1 Server gehostet, liegt also vermutlich nicht an einer Einstellung auf dem Server sondern an meinem Code.
Dateigrößen und Dateiformat überprüfung werd ich noch einbauen.
<?php
if (isset($_POST["submit"]))
{
$an = "****@gmail.com";
$name = $_POST['name'];
$firma = $_POST['company'];
$strasse = $_POST['street'];
$stadt = $_POST['city'];
$telefon = $_POST['phone'];
$email = $_POST['email'];
$message = $_POST['message'];
if (!empty($name) && !empty($message)) {
$mail_header = 'From:' . $name . "\n";
$mail_header .= 'Content-type: multipart/mixed; charset=UTF-8' . "\r\n";
$mail_header .= "Content-Transfer-Encoding: 7bit\n\n";
if (empty($company)) {$company = "leer"; };
if (empty($street)) {$street = "leer"; };
if (empty($city)) {$city = "leer"; };
if (empty($phone)) {$phone = "leer"; };
if (empty($email)) {$email = "leer"; };
$message = "
Name: $name\n
Firma: $company\n
Straße: $street\n
Stadt: $city\n
Telefon: $phone\n
E-Mail: $email\n
Nachricht: $message\n
";
if($_FILES["attachment"]["name"] != "") {
$strFilesName = $_FILES["attachment"]["name"];
$strContent = chunk_split(base64_encode(file_get_contents($_FILES["attachment"]["tmp_name"])));
$mail_header .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n";
$mail_header .= "Content-Transfer-Encoding: base64\n";
$mail_header .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n";
$mail_header .= $strContent."\n\n";
}
// Verschicken der Mail
$flgSend = @mail($an, $message,$mail_header );
if($flgSend)
{
echo "Mail send completed.";
}
else
{
echo "Cannot send mail.";
}
} else {
echo "<div class=\"red\">Bitte füllen Sie das Formular vollständig aus.</div>";
};
};
?>
Hier der HTML Code in der gleichen Datei, hier wird aber alles richtig übergeben, wenn ich die Variablen ausgebe zeigt er auch alles an was enthalten sein sollte, auch die Datei.
<form id="contact_form" action="" method="post" enctype="multipart/form-data" name="contact_form" class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
<div class="form-group">
<input id="name" class="form-control" type="text" name="name" value="" placeholder="Name"/>
</div>
<div class="form-group">
<input id="company" class="form-control" type="text" name="company" value="" placeholder="Firma (Optional)" />
</div>
<div class="form-group">
<input id="street" class="form-control" type="text" name="street" value="" placeholder="Straße + Nr. (Optional)" />
</div>
<div class="form-group">
<input id="city" class="form-control" type="text" name="city" value="" placeholder="PLZ + Ort (Optional)" />
</div>
<div class="form-group">
<input id="phone" class="form-control" type="text" name="phone" value="" placeholder="Telefon (Optional)" />
</div>
<div class="form-group">
<input id="email" class="form-control" type="text" name="email" value="" placeholder="E-Mail (Optional)" />
</div>
<div class="form-group">
<textarea id="message" class="form-control" type="text" name="message" rows="12" cols="20" placeholder="Nachricht"/></textarea>
</div>
<div class="form-group">
<input id="attachment" type="file" name="attachment" placeholder="Datei (max. 10 MB)" size="45" />
</div>
<div class="form-group">
<input id="submit" class="btn btn-primary" type="submit" name="submit" value="VERSENDEN" />
</div>
<div class="clear"></div>
</form>
Ich hoffe das ist nicht zu viel Aufwand.
Viele Grüße aus dem Allgäu
Nico
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 248789
Url: https://administrator.de/contentid/248789
Ausgedruckt am: 16.11.2024 um 03:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Simon...
...dann musst du noch einmal ins Manual schauen: http://de2.php.net/manual/en/function.mail.php
Denn dort steht doch das der zweite Parameter der Betreff sein soll, du allerdings übergibst ihr an dieser Stelle die Message !
Darüber hinaus wird der E-Mail-Inhalt nicht als Kopfversendet, schick dir doch einfach mal selber eine Mail mit einem Dateianhang und sie dir dann den Quelltext an
Und zusätzlich nach den Stichworten: "multipart" und "boundary" suchen.
Viel Erfolg,
schönen Gruß von der Arbeit
~Arano
...dann musst du noch einmal ins Manual schauen: http://de2.php.net/manual/en/function.mail.php
Denn dort steht doch das der zweite Parameter der Betreff sein soll, du allerdings übergibst ihr an dieser Stelle die Message !
Darüber hinaus wird der E-Mail-Inhalt nicht als Kopfversendet, schick dir doch einfach mal selber eine Mail mit einem Dateianhang und sie dir dann den Quelltext an
Und zusätzlich nach den Stichworten: "multipart" und "boundary" suchen.
Viel Erfolg,
schönen Gruß von der Arbeit
~Arano