So ist es. Ich möchte keinen aufgeblähten Mailer verwenden sondern es gern lernen.
Wirklichkeit: Die Email kommt an, aber der Anhang steht nur im Body in Form von Text (base64)
Hab mal Zeilenumbrüche geändert. Irgendwie muss es mit diesen Zeienumbrüchen und der Reihenfolge der boundary zusammenhängen. Ich komm einfach nicht dahinter.
<?php
if(isset($_POST["FormSend"])){
$msg = "";
$absender = "from@example.com";
$absendername = "My Form";
$empfaenger = "$to@xample.com";
$subject = "Mail mit Anhang";
$boundary = "----=_".md5(uniqid(mt_rand(), 1))."";
$Header = "FROM:$absendername <$absender>\r\n";
$Header .= "MIME-Version: 1.0\r\n";
$Header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$msg = "$boundary\r\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\" Content-Transfer-Encoding: 7bit\r\n";
foreach($_POST as $key => $value)
{
$value = mysql_real_escape_string($value);
$value = htmlentities("$value", ENT_QUOTES);
if($key == "FormSend"){}else{
$msg .= "$key: $value\r\n";
}
}
$msg .= "".$boundary."--\r\n";
$msg .= "$boundary\r\n";
$msg .="Content-Type: application/octetstream; name=".$_FILES["Anhang"]["name"]."\r\n";
$msg .="Content-Transfer-Encoding: base64\r\n";
$msg .="Content-Disposition: attachment; filename=".$_FILES["Anhang"]["name"]."\r\n";
@copy($_FILES["Anhang"]["tmp_name"],"phptmp/".$_FILES["Anhang"]["name"]."");
$zeiger_auf_datei=@fopen("phptmp/".$_FILES["Anhang"]["name"]."","rb");
$inhalt_der_datei=@fread($zeiger_auf_datei,filesize($_FILES["Anhang"]["name"]));
@fclose($zeiger_auf_datei);
$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
$msg .= $inhalt_der_datei;
$msg .= "".$boundary."--";
@mail($empfaenger,$subject,$msg,$Header);
}
?>
<form id="form-1" action="" enctype="multipart/form-data" method="post">
<fieldset>
<label id="label-2" for="Name">Name</label>
<input id="item-2" name="Name" type="text" value="" maxlength="" />
</fieldset>
<fieldset>
<label id="label-29" for="Anhang">Anhang</label>
<input name="Anhang" type="file" style="" />
</fieldset>
<button id="ButtonSend" name="FormSend" class="Button" type="submit">Absenden</button>
</form>