Tom: einfache Mime-Mail-Funktion (hoffentlich)

Beitrag lesen

ReHallo,

Also außer dass mich persönlich die Methode get gestört hat und ein Fehlendes Leerzeichen nach dem From: konnte ich keinen wesentlichen Fehler entdecken. Aber soll ja nix heißen.

Probiers nochmal mit dem Leerzeichen nach "From: "

Hast Du denn alle Fehlermeldungen eingeschalet zum Testen?
Hast Du register_globals ausgeschaltet?
Und lass das Script nicht auf einem öffentlich zugänglichen Server ohne Zugangskontrolle rumfliegen. Sonst hast Du ein Open Relay gebaut.

<?php  #### mimemail.php ###

Zum Testen:

ini_set("error_reporting","E_ALL");

if ($_POST["action"]=="versenden")
{
  $from = $_POST["absender"];
  $recipient = $_POST["empfaenger"];
  $subject= $_POST["betreff"];  ## darf nur ASCII 0-127 sein!
   ## müsstest Du nochmal eine Kastrierfunktion für bauen.

$boundary = strtoupper(md5(uniqid(time())));

$header = "From: $from\n"; //kommt von Formular

$header .= "MIME-Version: 1.0";
$header .= "\nContent-Type: multipart/mixed; boundary="$boundary"";

nach den zwei Zeilenschaltungen beginnt der Mailbody

$header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format";

nach dieser Boundary beginnt der erste Mime-Teil

$header .= "\n--$boundary";
$header .= "\nContent-Type: text/plain";
$header .= "\nContent-Transfer-Encoding: 8bit";

20 nach wieder zwei Zeilenschaltungen beginnt der Body dieses

Abschnitts. Und das ist der Plain-Text.

$header .= "\n\n$text";

hier wird das Attachment vorbereitet.

$fh = fopen($file,"r");
if ($fh)
{
$file_content = fread($fh,filesize($filename));
fclose($fh);
$file_content = chunk_split(base64_encode($file_content),76,"\n");
$header .= "\n--$boundary";
$header .= "\nContent-Type: application/octetstream;"."name="".basename($filename).""";
$header .= "\nContent-Transfer-Encoding: base64";
$header .= "\nContent-Disposition: attachment;"."filename="".basename($filename).""";
$header .= "\n\n$file_content\n";
}
$header .= "\n--$boundary--";

//$text,$subject und $recipient werden vom Formular übergeben via POST_Vars
//mail($recipient,$subject,$text,$header);

$ok = mail($recipient,$subject,"",$header);
if ($ok=="true"){print "Nachricht wurde versandt...";}
else{print "Konnte Nachricht nicht versenden...";}
} //Ende send==True
?>

<html>
<body>

<form action="mimemail.php"
               method="post"
               enctype="multipart/form-data"
               target="_blank">
<!-- multipart/form-data im weisen Vorgriff auf den Fileupload -->

Empfänger: <input type="text" name="empfaenger"><br>
Absender: <input type="text" name="absender"><br>
Betreff: <input type="text" name="betreff"><br>
Text: <textarea name="text" rows="10" cols="50" WRAP="VIRTUAL"></TEXTAREA><br>
Attachment: <input type="file" name="file"><br>
<input type="submit" value="versenden" name="action">
</body>
</html>

Wenn es nun nicht funktioniert und die Anderen keine Lust mehr haben, nochmal zu schauen, dann bin ich mit meinem PHP für heute auch am Ende.

Liebe Grüße

Tom