Hallo liebe Leute,
ich möchte eine eMail per PHP versenden, dabei möchte ich als Attachment mehrere dynamisch erzeugte JPGs mit anhängen.
Dabei habe ich jetzt zwei Probleme:
1. Es lässt sich anscheinend nur eine real auf der Festplatte vorhandene Datei anhängen und eben keine nach dem Schema "bildausschnitt.php?FilmBild=1100-28&posoben=46&poslinks=179".
2. Ich weis nicht, wie ich mehrere (unterschiedlich viele) Anhänge produziere.
Soweit das die verschiedenen URL`s in ein Array geschrieben werden müssen bin ich bereits, aber wie ich dort dynamische URL`s reinbekomme verstehe ich (auch bei PHP.net) nicht.
Mit einer oder mehrere realen Dateien klappt folgendes bereits:
---
<?
$ATTM=array("bild1.jpg,bild2.jpg");
$TEXT = "Es liegt eine neue Bestellung vor";
function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html,$AttmFiles){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Htmlreg_replace("/\n/","{br}",$Text)
or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";
//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";
//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";
// end of IB
$Msg.="\n--".$IB."--\n";
// attachments
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";
//file goes here
$fd=fopen ($AttmFile, "r");
$FileContent=fread($fd,filesize($AttmFile));
fclose ($fd);
$FileContent=chunk_split(base64_encode($FileContent));
$Msg.=$FileContent;
$Msg.="\n\n";
}
}
//message ends
$Msg.="\n--".$OB."--\n";
mail($To,$Subject,$Msg,$headers);
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}
//$TEXT="This is the first test\n in text format";
//$HTML=$TEXT;
SendMail(
"$email","$name", //sender
"test@testiingdomain.de","Empfaenger", //recipient
"Neue Bestellung $auftragsnr vom $datum", //subject
$TEXT,$HTML,$ATTM); //body and attachment(s)
?>
---
Nur wie kann ich jetzt festlegen wie viele Einträge in das Array $ATTM=array("bild1.jpg,bild2.jpg"); eigelsen werden?
Funktioniert das überhaupt mit dynamischen Dateien?
Oder muss die Datei erst real gespeichert werden?
Falls ja, wie würde man die Datei speichern?
Vielen Dank für Eure Hilfe!
Gruß
Mareike
ich möchte eine eMail per PHP versenden, dabei möchte ich als Attachment mehrere dynamisch erzeugte JPGs mit anhängen.
Dabei habe ich jetzt zwei Probleme:
1. Es lässt sich anscheinend nur eine real auf der Festplatte vorhandene Datei anhängen und eben keine nach dem Schema "bildausschnitt.php?FilmBild=1100-28&posoben=46&poslinks=179".
2. Ich weis nicht, wie ich mehrere (unterschiedlich viele) Anhänge produziere.
Soweit das die verschiedenen URL`s in ein Array geschrieben werden müssen bin ich bereits, aber wie ich dort dynamische URL`s reinbekomme verstehe ich (auch bei PHP.net) nicht.
Mit einer oder mehrere realen Dateien klappt folgendes bereits:
---
<?
$ATTM=array("bild1.jpg,bild2.jpg");
$TEXT = "Es liegt eine neue Bestellung vor";
function SendMail($From,$FromName,$To,$ToName,$Subject,$Text,$Html,$AttmFiles){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Htmlreg_replace("/\n/","{br}",$Text)
or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
$headers.="Reply-To: ".$FromName." <".$From.">\n";
$headers.="X-Priority: 1\n";
$headers.="X-MSMail-Priority: High\n";
$headers.="X-Mailer: PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";
//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";
//plaintext section
$Msg.="\n--".$IB."\n";
$Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg.="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";
// end of IB
$Msg.="\n--".$IB."--\n";
// attachments
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";
//file goes here
$fd=fopen ($AttmFile, "r");
$FileContent=fread($fd,filesize($AttmFile));
fclose ($fd);
$FileContent=chunk_split(base64_encode($FileContent));
$Msg.=$FileContent;
$Msg.="\n\n";
}
}
//message ends
$Msg.="\n--".$OB."--\n";
mail($To,$Subject,$Msg,$headers);
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}
//$TEXT="This is the first test\n in text format";
//$HTML=$TEXT;
SendMail(
"$email","$name", //sender
"test@testiingdomain.de","Empfaenger", //recipient
"Neue Bestellung $auftragsnr vom $datum", //subject
$TEXT,$HTML,$ATTM); //body and attachment(s)
?>
---
Nur wie kann ich jetzt festlegen wie viele Einträge in das Array $ATTM=array("bild1.jpg,bild2.jpg"); eigelsen werden?
Funktioniert das überhaupt mit dynamischen Dateien?
Oder muss die Datei erst real gespeichert werden?
Falls ja, wie würde man die Datei speichern?
Vielen Dank für Eure Hilfe!
Gruß
Mareike
Kommentar