E-Mail mit Anhang verschicken

MisterSimpson

Simpsons Fan
ID: 50883
L
20 April 2006
2.947
106
Hallo,

wie kann ich eine E-Mail mit einem festen Anhang schicken? z.B. mit einer pdf Datei?

Finde irgendwie nichts passendes bei google.
 
Hi :)

Was meinst Du mit "festem" Anhang? Willst Du an mehrere Leute den selben Anhang verschicken?
 
Moin.

MIME ist das Zauberwort. Ausführliche Infos findest du in den RFCs 2045 und 2046.

Oder wenn du zufällig PHP nutzt, keine Ahnung von der Materie hast und einfach loslegen willst, benutze den PHPMailer. Da is alles fertig und du musst nur einen Funktionsaufruf machen, um ein Attachment anzuhängen.
 
Ich habe ein Formular, möchte aber nicht auf durchsuchen drücken und eine Datei auswählen, sondern er soll eine bestimmte Datei in jeder E-Mail die über dieses Formular geschickt wird mitversenden.
Das Script soll auf PHP basieren.
 
Ich habe ein Formular, möchte aber nicht auf durchsuchen drücken und eine Datei auswählen, sondern er soll eine bestimmte Datei [...]
Das geht nicht. Zumindest kannst du nicht automatisch vom Clienten dir Datei zuschicken lassen (Wäre ja cool, wenn du nur meine Homepage besuchen musst und ich kann in deinen privaten Dateien stöbern 8) :ugly:).

Was aber geht, dass du serverseitig eine Datei als Anhang hinzufügst. Diese Datei muss nur von PHP erreichbar sein. Es ist nicht mal notwendig, diese Datei via HTTP zu veröffentlichen.

Wenn du die Datei geladen hast, siehe Post #3.
Hinweis, falls du PHPMailer nimmst: Der kann afair sogar einfach mit einem Dateinamen auskommen und übernimmt den Rest für dich.
 
Genau das meinte ich:

Was aber geht, dass du serverseitig eine Datei als Anhang hinzufügst. Diese Datei muss nur von PHP erreichbar sein. Es ist nicht mal notwendig, diese Datei via HTTP zu veröffentlichen.

Also ich sage z.B. was weiß ich:

$datei = test.pdf;

$send = $datei;
 
Ok danke, schaue mir die Seite nachher mal an.

Ich hatte jetzt:

$attachment = $mail->getFile('example.pdf');

$mail->addAttachment($attachment, 'example.pdf', 'application/pdf');

Aber das funktioniert leider nicht.
 
Mal grob skizziet, falls Du es wirklich von Hand machen willst:


PHP:
// $from: Absender
// $message: Nachrichtentext
// $filename: Dateiname des Anhangs
// $pdffile: Die tatsächliche PDF-Datei

$boundary = "----=_NextPart";

$headers = "From:$from\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;  boundary=\"$boundary\"\n";

$body = "--" . $boundary. "\n";
$body .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
$body .= "Content-Transfer-Encoding: quoted-printable\n\n";
$body .= $message . "\n";

$body .= "--" . $boundary. "\n";
$body .= "Content-Type: application/pdf; name=\"$filename\"\n";
$body .= "Content-Transfer-Encoding: base64\n\n";
$body .= chunk_split(base64_encode($pdffile));

$body .= "\n--" . $boundary . "--\n";

Und ja, ich mag die Doublequotes. Mag hässlich aussehen, ist halt so 'ne Angewohnheit von mir und ich mag es. :p


Trotzdem ist es wohl besser, da auf fertige Klassen zu setzen.
 
Gibt Leute, die findens übersichtlicher (war auch schon auf Kritik-Konter eingestellt :biggrin:). Is wie vieles ne Sache des Geschmacks und des persönlichen Coding-Styles.

Notepad2 formatiert das recht schön
Code:
[FONT=Lucida Console][COLOR=#000080][I]$body[/I][/COLOR] = [COLOR=#008000]"--[/COLOR][COLOR=#000080][I]$boundary[/I][/COLOR][COLOR=#008000]\n"[/COLOR];[/FONT]