PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   HTML Format in e-Mail (http://www.selfphp.de/forum/showthread.php?t=1591)

jazz13 01.09.2005 15:43:38

AW: HTML Format in e-Mail
 
hallo,

bin hier gerade auf diesen informativen eintrag gestoßen...
wär ja alles echt gut... hab nur leider gerade festgestellt, dass auf dem webhost wo ich's brauch erst die php-version 4.0.6 läuft...:-(((
d.h. installer etc. funzt nich so einfach...

gibt's da trotzdem noch möglichkeiten das zu realisieren oder kann ich's gleich aufgeben?

meikel (†) 01.09.2005 18:18:40

AW: HTML Format in e-Mail
 
Zitat:

Zitat von Nev
Hi @ll
Ich habe gerade einen netten Beitrag gefunden, der dieses Problem behandelt!

Langer Text. Die kurze Antwort lautet: phpmailer.

Generell sollten sich alle HTML-Email-Fans darüber im Klaren sein, daß normale und sicherheitsbewußte Empfänger keine HTML-Emails haben wollen. Oberpfui sind solche Emails mit JavaScript, externen nachzuladenden Quellen u/o Formularen.

Haben will sowas nur der, der auch sonst jeden Virus, Wurm u/o Trojaner mitnimmt. Die jammern dann auch im Fernsehen, daß man ihnen auf diese Art und Weise PIN und TAN abgeluchst hat, um das Konto zu plündern.

volti 01.09.2005 21:48:12

AW: HTML Format in e-Mail
 
Hallo,
ohne jetzt alle bisherigen Tipps gelesen zu haben:

emails (HTML) mit Bildern zu verschicken, die man auch sieht, wenn man nicht online ist, geht mit der gleichen Methode wie Anhänge (attachments) beifügen, wobei allerdings die Content-Disposition: inline; anstelle von Content-Disposition: attachment verwendet werden muss. Die Daten der Bildr werden dann in der email eingebunden mitgeschickt.

Im body der mail wird z.B. über <img src="cid:pointblack.gif"> (gerne wird hier auch eine Ziffernfolge/id o..ä. verwendet) eine Referenz zu den eingebetteten Bildern hergestellt.

Gerne bin ich bereit bei Bedarf ein Beispiel zu posten.

Allerdings: Im Geschäft unter Outlook gibt es keinerlei Probleme, bei anderen email-Programmen reagiert bei dieser Methode manches email-Programm anders in der Anzeige.

jazz13 06.09.2005 10:37:01

AW: HTML Format in e-Mail
 
@beide: danke für eure antworten, komme erste jetzt wieder dazu, da ich ein paar tage ans bett gefesselt war...:-(

@meikel: deswegen wollt ich's ja über die mail mime machen, ist zwar html, aber es müssen keine externen quellen mehr nachgeladen werden etc...

@volti: könntest du mir da bitte ein beispiel posten, wenn das ohne die pear mail:mime funzt...

volti 06.09.2005 20:21:14

AW: HTML Format in e-Mail
 
Ich poste mal einfach meine derzeit benutzte function zum Versenden von Mails (ohne Gewähr)
Die Anhänge uund inline-Bilder übergebe ich jeweils in einem Array.

PHP-Code:

function SendMail($From$FromName$To$AW$AWName$CC$BCC$Betreff$Text$Html$AttmFiles$GifFiles){
  
$OB="----=_OuterBoundary_000";
  
$IB="----=_InnerBoundery_001";
//  $Html=$Html?$Html:preg_replace("/\n/","{br}",$Text) or die("Weder Text noch HTML sind verfügbar!");
  
$Text=$Text?$Text:"Sorry, aber Sie benötigen einen HTML Mailer, um diese Mail lesen zu können!";
  
$From or die("Sender Addresse fehlt!");
//  $To   or die("Empfänger Addresse fehlt!");      //beim Änderungsversand kann evtl. nur blindcopy sein

  
$headers ="MIME-Version: 1.0\r\n";
  
$headers.="From: ".$FromName." <".$From.">\n";
//  $headers.="To: ".$ToName." <".$To.">\n";
  
$headers.="Reply-To: ".$AWName." <".$AW.">\n";
  
$headers.= "X-Mailer: PHP/" phpversion(). "\n";
  
$headers.= "X-Sender-IP: $ip\n";
  
$headers.= "X-Priority: 1\n";
  
$headers.= "X-MSMail-Priority: High\n";
  
$headers.= "Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";
  if(
$CC!="")  $headers.= "cc: $CC\n";                     //auch Absender selbst eine Kopie schicken
  
if($BCC!=""$headers.= "Bcc: $BCC\n";                   //mir selbst eine Blinde Kopie schicken

//Messages start with text/html alternatives in OB
  
$Msg ="This is a multi-part message in MIME format.\n";
  
$Msg.="\n--".$OB."\n";
  
$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";

//Text Bereich
  
$Msg.="\n--".$IB."\n";
  
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
  
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// Reiner Text beginnt hier
  
$Msg.=$Text."\n\n";

// HTML Bereich
  
$Msg.="\n--".$IB."\n";
  
$Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
  
$Msg.="Content-Transfer-Encoding: base64\n\n";
//HTML beginnt hier
  
$Msg.=chunk_split(base64_encode($Html))."\n\n";

// Ende IB
  
$Msg.="\n--".$IB."--\n";


//Inline-Gifs einbetten
  
if($GifFiles){
   foreach(
$GifFiles as $GifFile){
     
$patharray explode ("/"$GifFile);
     
$FileName=$patharray[count($patharray)-1];
     
$Msg.= "\n--".$OB."\n";
     
$Msg.= "Content-Type: image/gif; \n\tname=\"".$FileName."\"\n";
     
$Msg.= "Content-Transfer-Encoding: base64\n";
     
$Msg.= "Content-ID: ".$FileName."\n";
     
$Msg.= "Content-Disposition: inline;\n\tfilename=\"".$FileName."\"\n";
     if(
file_exists($GifFile)){
       
$fd=fopen ($GifFile"r");
       
$FileContent=fread($fd,filesize($GifFile));
       
fclose ($fd);
       
$FileContent=chunk_split(base64_encode($FileContent));
    }
     
$Msg.=$FileContent;
     
$Msg.="\n\n";
   }
  }


// beliebige Anlagen beifügen
  
if($AttmFiles){
   foreach(
$AttmFiles as $AttmFile){
    
$patharray explode ("/"$AttmFile);
    
$FileName=$patharray[count($patharray)-1];
    
$Msg.= "\n--".$OB."\n";
    
$Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
    
$Msg.="Content-Transfer-Encoding: base64\n";
    
$Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";

 
//Anlagedateien einbinden
    
if(file_exists($AttmFile)){
      
$fd=fopen ($AttmFile"r");
      
$FileContent=fread($fd,filesize($AttmFile));
      
fclose ($fd);
      
$FileContent=chunk_split(base64_encode($FileContent));
    }
    
$Msg.=$FileContent;
    
$Msg.="\n\n";
   }
  }

//Ende des Messagebereichs
  
$Msg.="\n--".$OB."--\n";
  if (
mail($To,$Betreff,$Msg,$headers)){
   return 
"ok";
  }
  else{
   return 
"not ok";
  }


Du kannst ja nicht benötigte Komponenten rauswerfen. Für meine Zwecke ist diese function voll ausreichend.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:26:04 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.