php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
E-Mail mit mehreren Dateianhängen


 
mlspacy
26-03-2003, 13:56 
 
Hi Freaks :D,

ich bin auf der Suche nach einer Funktion, mit der ich eine e-mail mit mehreren E-Mailanhängen verschicken kann.

Es sieht so aus, das der User zufor einige Dateien hochlädt und im nächsten Formular werden diese Dateien an den Administrator geschickt, sobald der User seinen Upload bestätigt hat.

Die Dateinamen werden in hidden textfields in einem array gespeichert.

Kann mir da vielleicht jemand helfen ?

Wäre sehr dankbar.

MFG

M.Nolte

 
Abraxax
26-03-2003, 13:57 
 
hast du schon die suche verwendet? :teach:

nein. denn dann hättest du was gefunden. ;)

 
mlspacy
26-03-2003, 14:04 
 
Doch habe ich nur waren die funktionen nicht zu gebrauchen!
Wie z.b. war da was:

mymail -> attachment("datei.zip");
mymail -> attachment("datei2.zip");
mymail -> attachment("datei3.zip");

Und so weiter.
Ich möchte aber etwas wo ich gleich als array die anhänge angeben kann...
Leider habe ich auch nicht die zeit um die andere funktion umzubauen.

 
Abraxax
26-03-2003, 14:09 
 
dann schreib das ding doch fix und.

eine neue fkt anlegen, die ein array erwartet und selbige geht mittels foreach durch das array durch und ruft die vorhandene fkt auf.

fertig.

 
mlspacy
26-03-2003, 14:14 
 
Hat jemand ein beispiel für mich ?

 
mrhappiness
26-03-2003, 14:19 
 
function beispiel($array)
{
foreach($array as $key => $value)
echo $key.': '.$value;
}

 
Abraxax
26-03-2003, 14:21 
 
in die class muss diese fkt mit rein.


function MultiAttachment($att_array) {
foreach ($arr_array as $datei) {
$this->attachment($datei);
}
}


der aufruf erfolgt dann so.

// array erstellen

$daten = array ();
$daten[] = "datei1.zip";
$daten[] = "datei2.zip";
$daten[] = "datei3.zip";
$daten[] = "datei4.zip";

$mymail = new deine_mail_class();
.
.
.
$mymail->MultiAttachment($daten);

wo ist nun dein problem????? :mad:

mist, happy war schneller.... :(
aber dafür habe ich auch mehr geschrieben... :D

 
mlspacy
26-03-2003, 14:26 
 
Also die Files sehen so aus:

Die Datei die die Klasse benutzt:

// Klasse einbinden
include("sendmail.php");

// Neue Instanz der Klasse erstellen (Ab jetzt kann auf die Funktionen der Klasse zugegriffen werden)
$mail = new sendmail();

// Angeben des Absenders und der Absenderemailadresse
$mail->from("Günni","Email@adresse.de");

// Angeben der Empfängeremailadresse
$mail->to("Email@adresse.de");

// Angeben des Betreff´s
$mail->subject("Hier kommt der Betreff rein");

// Angeben des Textes (Auch HTML möglich)
// Beim eingeben des HTML Textes bitte <HTML><BODY></BODY></HTML> weglassen,
// da dies automatisch hinzugefügt wird
$mail->text("Hier kommt der Text hin");

// Anegeben eines Attachment´s (sind auch mehrere möglich)
$mail->attachment("test.zip");
$mail->attachment("test2.zip");

// Versender der Email
$mail->send();

und die klasse sendmail.php ansich:

class sendmail
{
// Variable deklarieren
var $emailheader = "";
var $textheader = "";
var $textboundary = "";
var $emailboundary = "";
var $betreff = "";
var $empfaenger = "";
var $attachment = array();

function sendmail()
{
$this->textboundary = uniqid(time());
$this->emailboundary = uniqid(time());
}

// Von wem die Email kommt in den Header setzen
function from($name,$email)
{
$this->emailheader .= "From: $name<$email>\n";
$this->emailheader .= "MIME-Version: 1.0\n";
}

// Funktion um den Adressaten anzugeben
function to($to)
{
$this->empfaenger = $to;
}
// Funktionn für den Betreff anzugeben
function subject($subject)
{
$this->betreff = $subject;
}

// Textdaten in Email Header packen
function text($text)
{
$this->textheader .= "Content-Type: multipart/alternative; boundary=\"$this->textboundary\"\n\n";
$this->textheader .= "--$this->textboundary\n";
$this->textheader .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n";
$this->textheader .= "Content-Transfer-Enconding: quoted-printable\n\n";
$this->textheader .= strip_tags($text)."\n\n";
$this->textheader .= "--$this->textboundary\n";
$this->textheader .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
$this->textheader .= "Content-Transfer-Enconding: quoted-printable\n\n";
$this->textheader .= "<html><body>$text</body></html>\n\n";
$this->textheader .= "--$this->textboundary--\n\n";
}

// Funktion zum anhängen für Attachments in der Email
function attachment($datei)
{
// Überprüfen ob File Existiert
if(is_file($datei))
{
// Header für Attachment erzeugen
$attachment_header = "--".$this->emailboundary."\n" ;
$attachment_header .= "Content-Type: application/octet-stream;\n name=\"$datei\"\n";
$attachment_header .= "Content-Transfer-Encoding: base64\n";
$attachment_header .= "Content-Disposition: attachment;\n filename=\"$datei\"\n\n";

// Daten der Datei einlesen, in das BASE64 Format formatieren und auf max 72 Zeichen pro Zeile
// aufteilen
$file['inhalt'] = fread(fopen($datei,"rb"),filesize($datei));
$file['inhalt'] = base64_encode($file['inhalt']);
$file['inhalt'] = chunk_split($file['inhalt'],72);

// Attachment mit Header in der Klassenvariable speichern
$this->attachment[] = $attachment_header.$file['inhalt']."\n";
}
else
{
echo "Die Datei $datei existiert nicht...\n";
}
}

// Funktion zum erstellen des Kompletten Headers der Email
// Senden der Email
function send()
{
$header = $this->emailheader;

// Überprüfen ob Attachments angehängt wurden
if(count($this->attachment)>0)
{
$header .= "Content-Type: multipart/mixed; boundary=\"$this->emailboundary\"\n\n";
$header .= "--$this->emailboundary\n";
$header .= $this->textheader;

for($i=0;$i<count($this->attachment);$i++)
{
$header .= $this->attachment[$i];
}

$header .= "--$this->emailboundary--";
}
else
{
$header .= $this->textheader;
}
// Versenden der Mail
mail("$this->empfaenger",$this->betreff,"",$header);
}
}




Leider funktioniert die clase irgendwie nicht! Ich weiss auch nicht wo der fehler liegt.


da ich mir meine augen nicht ruinieren will, habe ich mal die php.tags eingefügt.
Abraxax

 
mlspacy
26-03-2003, 14:28 
 
Ich verstehe nicht wirklich wie ich das da einbinden soll!
Kann auch sein, dass es daran liegt, dass ich schon zulange an diesem Monitor sitze.

hehe


Thx für die Hilfe

 
Abraxax
26-03-2003, 15:22 
 
was ist an ....Original geschrieben von Abraxax
in die class muss diese fkt mit rein.

.
.
.

der aufruf erfolgt dann so.

.
.
.... so schwer zu verstehen?

 
TobiaZ
26-03-2003, 15:52 
 
Was ein Schmarn!!!

 
mlspacy
26-03-2003, 16:28 
 
Ich bekomme immer diese Fehlermeldung:

Parse error: parse error, unexpected ';', expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'
in /home/www/web1/html/sende_email.php on line 1

Obwohl in der zeile 1 nix ist.
ich habe auch schon die classe umbennant.

Kann mir jemand weiterhelfen?

 
TobiaZ
26-03-2003, 16:52 
 
das könnte ein fehlendes } sein.

 
mlspacy
26-03-2003, 16:55 
 
Ist es leider auch nicht!

Ihr könnt auf seite 1 den code sehen und es fehlt nichts.
Diese Class bring mich noch auf die Palme.

Hat jemand noch einen Vorschlag ???

 
TobiaZ
26-03-2003, 16:57 
 
ich hab nur eine Seite :D

Da siehst du mal klar, wo der Vorteil von eigenen Scripten ist. :p

 
mlspacy
26-03-2003, 17:09 
 
Naja wenn mans kann dann macht man es auch selber.
Aber wenn nicht, dann muss man auf fremdscripte zugreifen und dann kommt sowas.

ich schicke euch nochmal das script mit vielleicht kann mir dann jemand helfen!

 
TobiaZ
26-03-2003, 17:16 
 
Soll heißen, du hast keinen Plan, und wir sollen dein Script fixen?

Wie schon gesagt:
Was für ein Schmarn!
:D

 
mlspacy
26-03-2003, 17:21 
 
Keinen Plan wie ich mails mit mehreren Anhängen verschicken soll.
Sonst würde ich hier auch keine Frage stellen.

Aber naja wenn man auch nur solche antworten bekommt dass man es nicht drauf hat und dadurch von leuten angemacht wird, dann kann ich es mir auch sparen.

Dachte eigentlich dass hier im Forum leute sind die was auf dem kasten haben. Nur Tobi scheint es wohl nicht zu haben.

Wer solche bemerkungen ablässt scheint selber wohl etwas überfordert zu sein mit dem Problem.

 
TobiaZ
26-03-2003, 17:27 
 
Naja, nicht wirklich. Die Lösung hattest du ja auch schon. Es ist nur so, dass wir dauern solche Posts haben, nach dem Motte macht ihr mal bitte und besser jetzt als gleich. Die Krönung ist dann noch, wenn es heißt ich hab keine Zeit mich damit zu beschäftigen, weil es morgen beim Kunden abgeliefert werden muss. Insofern denke ich, wo kein Interesse/Initiative/... besteht, brauch ich auch nicht zu helfen. Wenn die anderen das machen, ists ja in Ordnung.

 
mlspacy
26-03-2003, 17:30 
 
Gut darum habe ich niemanden gebeten.

Ich habe lediglich gesagt, dass in dem script wohl alles ok ist und dass ích den fehler nicht finden kann.

Ich habe zwar die lösung und dafür bin ich auch dankbar.
Dachte vielleicht würde ja jemand den fehler sehen und mit nen tip geben könen.

Okay trodzdem danke an alle die mithelfen wollten / haben ich werde mal weiter schauen.

 
Abraxax
26-03-2003, 18:13 
 
tobi hat recht. wenn man keine lust hat was zu machen,
warum sollte man dann helfen?

und ....
.....tobi hat schon was auf dem kasten. ;)



wo hast du denn deine anhänge definiert?

du ruft die neue funktion auf, die auch augenscheinlich korrekt in der class eingebunden ist ...
// Angeben eines Attachment´s (sind auch mehrere möglich)
$mailen->MultiAttachment($bilder);... aber ich habe nirgens eine definition für $bilder gesehen.

bei mir unterm bett war auch nix. :confused:

naja. wahrscheinlich ist die unter deinem bett verschwunden.... :dontknow:


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:27 Uhr.