E-Mail-Versand mit mehreren Anhängen

Alles, was PHP betrifft, kann hier besprochen werden.

E-Mail-Versand mit mehreren Anhängen

Postby Knight1 » 17. February 2006 20:10

Hi Leutz,
habe da ein dickes Problem.
Und zwar möchte ich mehrere Dateien als Anhänge in einer E-Mail verschicken. Nur kommt zwar die E-Mail mit dem Text und Btreff korrekt an, es befindet sich allerdings nur eine Datei im Anhang und die ist auch nicht mal komplett (nur ein paar byte). Es müssten eigentlich sechs Dateien sein, vier Grafiken und zwei txt-Dateien.

Hier mal der zusammen bau der Header-Zeilen:
Datei: tpl/email_headers/obj_notification.tpl
Code: Select all
$Trenner = md5(uniqid(time()));
$header .= "Content-Type: multipart/mixed; boundary=$Trenner";
$header .= "\n";
$header = "Date: " . date("r",time());
$header .= "\n";
$header   .= "MIME-Version: 1.0";
$header .= "\n";
$header   .= "Content-type: text/html; charset=iso-8859-1";
$header .= "\n";
$header   .= "From: Administrator <admin@maier-immobilien.de>";
$header .= "\n";
$header   .= "To: [receiver]";
$header .= "\n";
$header   .= "Reply-To: Kai Kordel <webmaster@maier-immobilien.de>";
$header .= "\n";
$header   .= "Subject: [subject]";
if ($admin == "1")
{
$Header .= "--$Trenner";
$header .= "Content-Transfer-Encoding: 8bit";
$header .= "\n";
$header .= "Content-Type: text/plain; name=objekt_".$object_id.".txt";
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=objekt_".$object_id.".txt";
$header .= "\n\n";
$Dateiinhalt .= fread(fopen("file_tmp/objekt_".$object_id.".txt", "rb"), filesize("file_tmp/objekt_".$object_id.".txt"));
$header .= chunk_split(base64_encode($Dateiinhalt));
$header .= "--$Trenner";

$header .= "Content-Transfer-Encoding: 8bit";
$header .= "\n";
$header .= "Content-Type: text/plain; name=kunde_".$new_offerer_id.".txt";
$header .= "\n";
$header .= "Content-Transfer-Encoding: base64";
$header .= "\n";
$header .= "Content-Disposition: attachment; filename=kunde_".$new_offerer_id.".txt";
$header .= "\n\n";
$Dateiinhalt .= fread(fopen("file_tmp/kunde_".$new_offerer_id.".txt", "rb"), filesize("file_tmp/kunde_".$new_offerer_id.".txt"));
$header .= chunk_split(base64_encode($Dateiinhalt));
$header .= "--$Trenner";
 for ($x=1;$x<=4;$x++)
 {
 $array_pointer = "obj_image_";
 $array_pointer .= "".$x."";
  if ($_FILES[$array_pointer]['error'] == "0")
  {
  #move_uploaded_file($_FILES[$array_pointer]['tmp_name'],"file_tmp/".$_FILES[$array_pointer]['name']."");
  #chmod("file_tmp/".$_FILES[$array_pointer]['name']."",0777);
  $header .= "Content-Transfer-Encoding: 8bit";
  $header .= "\n";
  $header .= "Content-Type: ".$_FILES[$array_pointer]['type']."; name=".$_FILES[$array_pointer]['name']."";
  $header .= "\n";
  $header .= "Content-Transfer-Encoding: base64";
  $header .= "\n";
  $header .= "Content-Disposition: attachment; filename=".$_FILES[$array_pointer]['name']."";
  $header .= "\n\n";
  $Dateiinhalt .= fread(fopen("images/objects_images/".$obj_img_name."", "rb"), filesize("images/objects_images/".$obj_img_name.""));
  $header .= chunk_split(base64_encode($Dateiinhalt));
  $header .= "--$Trenner";
  }
 }
}


Und hier die Zeilen die die E-Mail bauen:

Code: Select all
GLOBAL $new_pw;
GLOBAL $img_error;
GLOBAL $new_offerer_id;
#GLOBAL $object_id;
$admin = "1";

$email_vorlage = fread(fopen("tpl/email_vorlagen/admin_obj_notification.tpl",r),filesize("tpl/email_vorlagen/admin_obj_notification.tpl"));
$email_vorlage = str_replace("[date]",date("d.m.Y",time()),$email_vorlage);
$email_vorlage = str_replace("[time]",date("g:i",time()),$email_vorlage);
for ($x=1;$x<=4;$x++)
{
 if ($img_error[$x]['error_code'] == "0") { $email_vorlage = str_replace("[img_".$x."]","<font style=\"color:#FF0000;\">Bild Nr. ".$x." ist mit einer Dateigröße von number_format(bcdiv($img_error[$x]['file_size'],1024,2),'2',',','.'); KB größer als die erlaubten ".$config['max_img_file_size']."".$img_error[$x]['max_img_file_size_unit'].".<br>Dieses Bild wurde daher nicht in das System übernommen.</font>",$email_vorlage); } ##Datei zu groß
 if ($img_error[$x]['error_code'] == "1") { $email_vorlage = str_replace("[img_".$x."]","<font style=\"color:#FF0000;\">Bild Nr. ".$x." liegt mit den Ausmaßen von ".$img_error[$x]['img_width']."x".$img_error[$x]['img_height']."dpi nicht in dem Verhältnis von 800x600dpi.<br>Dieses Bild wurde daher nicht in das System übernommen.</font>",$email_vorlage); } ##Ausmaße zu groß
 if ($img_error[$x]['error_code'] == "2") { $email_vorlage = str_replace("[img_".$x."]","<font style=\"color:#FF0000;\">Bild Nr. ".$x." hat das Falche Dateiformat.<br>Erlaubt ist der MIME-Type <b>image/pjpeg</b>. Das Bild hat den MIME-Typ <b>".$img_error[$x]['mime_type']."</b>.<br>Dieses Bild wurde daher nicht in das System übernommen.</font>",$email_vorlage); } ##Falches Dateiformat
 if ($img_error[$x]['error_code'] == "3") { $email_vorlage = str_replace("[img_".$x."]","<font style=\"color:#00FF00;\">Bild Nr. ".$x." erfolgreich in das System übernommen.</font>",$email_vorlage); } ##Everthing OK; No Error
}
$obj_cat_sql   = "SELECT * FROM immo_categories WHERE id = '".$_POST['obj_category']."'";
$obj_cat_result   = mysql_query($obj_cat_sql);
$obj_cat      = mysql_fetch_array($obj_cat_result);

$country_sql = "SELECT * FROM immo_countries WHERE id = '".$_POST['obj_country']."'";
$country_result = mysql_query($country_sql);
$country_obj = mysql_fetch_array($country_result);

$obj_file      = fopen("file_tmp/objekt_".$object_id.".txt",'wb');
$obj_content   = "Objekt-Datensatz-ID: ".$object_id."";
$obj_content   .= "\n\r";
$obj_content   .= "Objekt-Kategorie: ".$obj_cat['category']."";
$obj_content   .= "\n\r";
$obj_content   .= "Objekt-Art: ".$_POST['obj_type']."";
$obj_content   .= "\n\r";
$obj_content   .= "Zimmer/Räume: ".$_POST['obj_rooms']."";
$obj_content   .= "\n\r";
$obj_content   .= "Nutzfläsche: ".$_POST['obj_livingarea']."";
$obj_content   .= "\n\r";
$obj_content   .= "Baujahr: ".$_POST['obj_yoc']."";
$obj_content   .= "\n\r";
$obj_content   .= "Grundstückfläche: ".$_POST['obj_plot']."";
$obj_content   .= "\n\r";
$obj_content   .= "Garagen: ".$_POST['obj_garages']."";
$obj_content   .= "\n\r";
$obj_content   .= "Stellplätze: ".$_POST['obj_campsite']."";
$obj_content   .= "\n\r";
$obj_content   .= "Preis: ".$_POST['obj_price']."";
$obj_content   .= "\n\r";
 if ($_POST['obj_price_type'] == "0")
 {
 $obj_content   .= "Angebotstyp: Verkauf";
 }
 if ($_POST['obj_price_type'] == "1")
 {
 $obj_content   .= "Angebotstyp: Vermietung (Gewerblich)";
 }
 if ($_POST['obj_price_type'] == "2")
 {
 $obj_content   .= "Angebotstyp: Vermietung (Privat)";
 }
$obj_content   .= "\n\r";
$obj_content   .= "Straße: ".$_POST['obj_street']." ".$_POST['obj_housenumber']."";
$obj_content   .= "\n\r";
$obj_content   .= "Ort/Stadt: ".$_POST['obj_plz']." ".$_POST['obj_town']."";
$obj_content   .= "\n\r";
$obj_content   .= "Land: ".$country_obj['country_deu']."";
$obj_content   .= "\n\r";
$obj_content   .= "Beschreibung: ".$_POST['obj_description']."";
fwrite($obj_file,$obj_content);
fclose($obj_file);
chmod("file_tmp/objekt_".$object_id.".txt",0777);

$country_sql = "SELECT * FROM immo_countries WHERE id = '".$_POST['pd_country']."'";
$country_result = mysql_query($country_sql);
$country_cli = mysql_fetch_array($country_result);

$client_file      = fopen("file_tmp/kunde_".$new_offerer_id.".txt",'wb');
 if (isset($_POST['schon_kunde']) && ($_POST['schon_kunde'] == "0"))
 {
 $client_content   = "Objekt-Datensatz-ID: ".$new_offerer_id."";
 $client_content   .= "\n\r";
 $client_content   .= "Name: ".$_POST['pd_firstname']." ".$_POST['pd_lastname']."";
 $client_content   .= "\n\r";
 $client_content   .= "Firma: ".$_POST['obj_company']."";
 $client_content   .= "\n\r";
 $client_content   .= "Abteilung: ".$_POST['pd_comp_dept']."";
 $client_content   .= "\n\r";
 $client_content   .= "Straße: ".$_POST['pd_street']." ".$_POST['pd_housenumber']."";
 $client_content   .= "\n\r";
 $client_content   .= "Ort/Stadt: ".$_POST['pd_plz']." ".$_POST['pd_town']."";
 $client_content   .= "\n\r";
 $client_content   .= "Land: ".$country_cli['country_deu']."";
 $client_content   .= "\n\r";
 $client_content   .= "Telefon: ".$_POST['pd_phone']."";
 $client_content   .= "\n\r";
 $client_content   .= "Telefax: ".$_POST['pd_fax']."";
 $client_content   .= "\n\r";
 $client_content   .= "Mobil: ".$_POST['pd_mobil']."";
 $client_content   .= "\n\r";
 $client_content   .= "E-Mail: ".$_POST['pd_mail']."";
 }
 elseif (isset($_POST['schon_kunde']) && ($_POST['schon_kunde'] == "1"))
 {
 $client_content   = "Das neue Objekt wurde einem bereits bestehenden Kunden zugeordnet, zu ersehen im Verwaltungsbereich der Seite.";
 }
fwrite($client_file,$client_content);
fclose($client_file);
chmod("file_tmp/kunde_".$new_offerer_id.".txt",0777);

include ("tpl/email_headers/obj_notification.tpl"); ##E-Mail-Header bauen
$header = str_replace("[subject]","Neues Objekt",$header);
$header = str_replace("[receiver]","Empfänger-E-Mail-Adresse",$header);
mail('Empfänger-E-Mail-Adresse', 'Neues Objekt', $email_vorlage, $header);


Die Dateien exitieren mit 1000%er Sicherheit und sind auch vom Inhallt her komplett.

Ich bin total ratlos.


Bitte helft mir


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby Wiedmann » 17. February 2006 22:19

Ohne mir jetzt den Code wirklich anzuschauen... nimm für sowas besser pear::mail.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Knight1 » 18. February 2006 08:00

Ein Link zu einer Beschreibung wäre nicht schlecht.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby Wiedmann » 18. February 2006 11:49

Tante Google sagt, dass PEAR unter pear.php.net zu finden ist. Dort kann man bei der Packet-Suche dann "mail" eingeben und auf den Ergebnislink klicken.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby dekker » 18. February 2006 15:16

Guck dir am besten mal Mail_Mime an, wenn du mit mehreren Anhängen arbeitest.

Und, nochmal kurz gegooglet, kleine Anleitung: http://www.contentmanager.de/magazin/ar ... n_php.html
dekker
 
Posts: 6
Joined: 17. February 2006 19:06

Postby Knight1 » 18. February 2006 15:45

Leider habe ich auf dem Webspace wo die Seite liegt keine Pear-Unterstützung.
Fällt also aus.


Kai aka Knight1
PS: Hier die PHP-Konfiguration: http://www.maier-immobilien.de/admin/info.php
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby KingCrunch » 18. February 2006 16:30

Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Knight1 » 18. February 2006 16:58

KingCrunch wrote:Installation ;)


Du bist mir vielleicht ein Witzbold, KingCrunch.
Wie soll ich denn an die PHP-Installation bei einem Webspace ran kommen? Wenn es ein vServer bzw. ein Root-Server wäre dann würde ich es ja machen.
Ich denke aber auch dass der Anbieter dies nicht für einen alleine machen wird.

Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby KingCrunch » 18. February 2006 17:10

Installation eines lokalen PEAR-Verzeichnisses bei fremden Web-Hostern
Eventuell deshalb? ;)

PS: Um noch ein wenig konkreter zu werden, dürfte der Abschnitt "Der traditionelle Weg über FTP" für dich interessant sein
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Knight1 » 18. February 2006 17:30

Ich habe es anders gelöst als ich eigentlich vor hatte.
Brauche das somit nicht mehr.
Trotzdem Danke für die Antworten.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64


Return to PHP

Who is online

Users browsing this forum: No registered users and 1 guest