mail() mit Anhang...aaarghl! Hilfe!

ojamaney

Erfahrenes Mitglied
Hi Leute,
ich habe mir aus mehreren Tutorials und Foren ein Formular gebastelt das eMails verschicken kann. Funktioniert soweit alles gut, auch der Anhang wird mitgeschickt.
Aber, wie stelle ich es an, dass das Bild in der eMail selber angezeigt wird und nicht nur als Anhang?
Ausserdem kommt das Bild zwar an, wird aber als unbekannter Datentyp im Anhang gezeigt.
Wenn ich ....
PHP:
                $msg .= "\n"; 
		$msg .= "Content-Type: ";
		$msg .= $_FILES['Anhang']['type'];
		$msg .= "\n";

mit angebe, wird mir der "Content-Type: image/jpeg" in die Mail geschrieben.(Auch wenn ich das in der Variablen $header speicher")
Hat das was mit den ominösen "boundary" zu tun?
Wenn ja, wofür ist das? Wo muss ich das einfügen?

Und warum bekomme ich eine Fehlermeldung wenn ich keinen Anhang mitsende?
"Warning: fread(): supplied argument is not a valid stream resource in /home/www/web424/html/emailplus/emailplus.php on line 42"

Ich dachte das hätte ich hiermit abgesichert:
PHP:
if ( $anhang !== "")....usw


Hier mal der ganze php-Code:
PHP:
<?php

	if ($_REQUEST["do"])
	{
		// Pflichtfeldkontrolle
			$error_msg = "";
			
			if (empty($_REQUEST["to"]) || empty($_REQUEST["from"]) || empty($_REQUEST["subject"]))
			{
				$error_msg = "Bitte füllen Sie alle Pflichtfelder(*) aus!<br>";
			}
			else
			{

		// Adressdaten 
			$to 		= $_REQUEST["to"];
			$from 		= $_REQUEST["from"];
			$subject 	= $_REQUEST["subject"];
			$msg 		= $_REQUEST["msg"];
			$anhang		= $_REQUEST["Anhang"];

			$Trenner = md5(uniqid(time()));
			
		// Anhang
			$Dateiname     = $_FILES['Anhang']['name']; 
			$DateinameMail = $Dateiname;
			
		// Aufbau der Nachricht und des Anhangs
			$header = "From: ".$_REQUEST["from"]."\n";

			$msg .= "\r\n";
			if ( $anhang !== "")
			{
				$msg	.= "\n";
				$msg .= "begin 666 $DateinameMail \r\n";
				$Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);
				$msg .= convert_uuencode($Dateiinhalt);
				$msg .= "end\r\n";
			}
	
			// eMail senden

				$status = mail($to, $subject, $msg, $header);
			
				if (! $status )
				{
					die("Konnte die eMail nicht versenden!");
				}
				else
				{
					$status_msg = "Die eMail wurde gesendet";
				}

			}
	}

?>
//...ab hier kommt html-code für das Formular

Ich hoffe Ihr könnt mir auf die Sprünge helfen. Aber bitte Erklärungen für Doofe, von php ist mir nur das Grundwissen bekannt.

Danke, ojamaney :)

Nachtrag:
Die Datei zum mitsenden liegt nicht auf dem Server. Sie soll vom PC mitgesendet werden.

Ps.:
Das Formular kann zur Zeit hier getestet werden: http://skiron.de/emailplus/emailplus.php
Vielleicht wird es dann deutlicher welche Probleme dabei entstehen.
 
Zuletzt bearbeitet:
Zurück