PHP Mail mit Attachment

Krankl

Grünschnabel
Ich würde gerne E-Mails mit Attachment per PHP-Script verschicken.
Ich hab auch schon etwas über MIME gefunden, dass man angeblich braucht. Habs allerdings nicht gecheckt.
Könnte mir das vielleicht wer erklären.
Wäre echt wichtig

mfg TT
 
die mail()-Funktion wird dafür wohl nicht reichen.

Aber du kannst mit PHP eine Socket-Verbindung zu einem SMTP-Server herstellen, und von diesem dann die mail schicken.

Habe mich damit nur kurz befasst, darum von mir nur ein Link,
der dir aber weiter helfen sollte:
DevShed.com
Fertige Scripts gibt es auf http://www.hotscripts.com.

Da solltest du dir das benötigte Wissen zusammen suchen können.
Und wenn nicht gibt es ja noch die Google, den Helfer in der Not. :-)

liebe Grüße,
Daniel
 
so. und ich verweise mal auf PEAR: Mail_Mime. Diese Klasse hat eine Methode zum anfügen von Attachments implementiert (siehe ClassDoku)

Aus eigener Erfahrung weiß ich, dass diese Klasse einfach zu handhaben ist. Ich hab damit innerhalb von 4 Tagen einen vollwertigen Newsletter realisiert, weil die ganzen Feinheiten mit HTML Mails usw abgenommen werden.

Ciao, Jörg
 
OK
Ich hab den ersten Quelltext soweit mal gecheckt.
Hab einfach mal eine Vorlage genommen und editiert. Das E-Mail kommt auch an, nur ohne Attachment. Die Datei text.txt soll angehängt werden.
Er kennt jemand den Fehler? Wäre echt nett ;)

PHP:
$an="meineemailadresse@domain.com";
			$subject="Test E-Mail";
			
			/* Beginne den Mail-Header mit der Definition des Absenders */
			$mail_header = "From: Tester <tester@test.com>";

			/* Generiere einen Boundary */
			$boundary = strtoupper(md5(uniqid(time())));

			/* Beginne den Mail-Header mit MIME-Mail-Header */
			/* (siehe http://www.php3-forum.de/mime_mail.htm) */
			$mail_header .= "\nMIME-Version: 1.0";
			$mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
			$mail_header .= "\n\nThis is a multi-part message in MIME format  --  Dies ist eine mehrteilige Nachricht im MIME-Format";

			/* Hier faengt der normale Mail-Text an */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: text/plain";
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\n\nTest";

			/* Hier faengt der Datei-Anhang an */
			$mail_header .= "\n--$boundary";
			$mail_header .= "\nContent-Type: text/plain";
			/* Lese aus dem Array $contenttypes die Codierung fuer den MIME-Typ des Anhangs aus */
			$mail_header .= "\nContent-Transfer-Encoding: 8bit";
			$mail_header .= "\nContent-Disposition: attachment; filename=\"text.txt\"";

			/* Gibt das Ende der eMail aus */
			$mail_header .= "\n--$boundary--";

		/* Sende eMail und gebe Fehler bzw. Bestaetigung aus */
		if(@mail($an,$subject,"",$mail_header)) echo "Die eMail mit dem Betreff ".htmlentities($subject)." wurde an ".htmlentities($an)." gesendet.";
		else echo "Es ist ein Fehler beim senden der eMail aufgetreten.";

EDIT:
OK
Habs jetzt doch noch hinbekommen.
Auf jeden Fall danke für eure Links ;)
 
Zuletzt bearbeitet:
Hier mal ein Script, das ein MySQL Backup erzeugt und verschickt:
PHP:
exec("mysqldump -h$db_host -u$db_user -p$db_pass $db_database -e --add-drop-table --allow-keywords > $db_file_export_name");
		$grenze="grenzlinie";
		$headers ="MIME-Version: 1.0\r\n";
		$headers.="From: $mail_from\n";
		$headers.="Content-Type: multipart/mixed;\n\tboundary=$grenze\n";
		$botschaft="\n--$grenze\n";
		$botschaft.="Content-transfer-encoding: 7BIT\r\n";
		$botschaft.="Content-type: text/plain\n\n";
		$botschaft.= $mail_content;
		$botschaft.="\n\n";
		$botschaft.="\n--$grenze\n";
		$botschaft.="Content-Type: application/octetstream;\n\tname=$db_file_export_name\n";
		$botschaft.="Content-Transfer-Encoding: base64\n";
		$botschaft.="Content-Disposition: attachment;\n\tfilename=$db_file_export_name\n\n";
		$zeiger_auf_datei=fopen("$db_file_export_name","r");
		$inhalt_der_datei=fread($zeiger_auf_datei,filesize("$db_file_export_name"));
		fclose($zeiger_auf_datei);
		$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
		$botschaft.=$inhalt_der_datei;
		$botschaft.="\n\n";
		$botschaft.="--$grenze";
		mail($mail_to,$mail_title,$botschaft,$headers);
		exec("rm $db_file_export_name");
		print "email wurde versandt und export lokal gelöscht!";
Villeicht kannste damit was anfangen ;)

(Script by =SonicBe@m=)
 
Zurück