Zum Inhalt springen

PHP -> Email mit Bild ?


Empfohlene Beiträge

Guten Morgen!

Ich hab ein kleines Problem. Ich möchte eine Email via PHP versenden in der ein Bild angezeigt wird. Es gibt ja dafür jetzt 2 möglichkeiten. Die eine wäre, ich verschicke die email als Html-email und verlinke darin auf eine bild auf einem webserver. -> will ich aber nicht, da es im outlook dann heißt "Datei wurde aus sicherheitsgründen nicht runtergeladen, Falls sie es dennoch runterladen wollen, klicken sie hier".. (oder so ähnlich)

Die 2 möglichkeit ist es, eine email wie im outlook zu schreiben, inder man das bild direkt in die email einfügt (im Outlook über Einfügen->Grafik->Ausdatei). Anscheinend wird dann das bild als anlage mitgespeichert, und dann über die Htmlemail auf diese Anlage zugegriffen. Und genau hier liegt mein problem!

Wie kann ich auf diese Anlage zugreifen, bzw wie ich kann ein solche email versenden, in der das bild schon direkt angezeigt wird ?

vielleicht kann mir jemand helfen!

Danke !

Link zu diesem Kommentar
Auf anderen Seiten teilen

Anlage auf englisch ist Attachment

ich will in php eine mail mit attachment

--> google erster fund:

http://www.php-resource.de/forum/showthread/t-11673.html

--> google siebter fund (is zwar n skript mit oberfläche aber kannst ja ma die sourcen angucken wie das gehandhabt wird)

http://www.php-free.de/Detailed/2328.html

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke ist zwar nett gemeint, aber nicht das was ich suche.

Eine Email mit einem anhang kann ich verschicken. dazu hab ich schon ein script gefunden. Mir gehte darum, dass ich ein bild verschicken kann, dass gleich in der email angezeigt wird.. (um den code)

wie kann ich auf ein foto das am anhang liegt zugreifen. ohne einen link auf einen webserver via html mit <IMG> zu machen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Anscheinend wird dann das bild als anlage mitgespeichert, und dann über die Htmlemail auf diese Anlage zugegriffen. Und genau hier liegt mein problem!

Wie kann ich auf diese Anlage zugreifen, bzw wie ich kann ein solche email versenden, in der das bild schon direkt angezeigt wird ?

du musst einfach das Bild in der Mail mitschicken ;) Natürlich musst du dich dabei an das "eMail Format" halten.

Eine Email ist einfach nur Text, nicht mehr und nicht weniger. Ein gewisser Teil am Anfang wird dabei als Header ausgewertet und enthält Steuerungsinfos (Empfänger, Absender etc). Du musst dein Bild also in Text umwandeln (base64-Kodierung) und in den Textkörper, der entsprechend aufgebaut sein muss, einbinden.

Du musst also in der Mail mitteilen, wie sie aufgebaut ist und was sie beinhaltet. Bei einer Mail mit Anhang also ungefähr so:



Content-Type: multipart

Content-Type: Text

  Hier der Text der Mail

Ende Content-Type Text

Content-Type: Image

Eindeutige Content-ID

Content-Anlage: inline

  Bild als base64

Ende Bild und Mail


Den Header musst du in php ja eh selber schreiben, also sowas wie:


$Header= "From:$MailFrom<$MailFromAdr>\r\n";
$Header.= "X-Mailer: PHP/" . phpversion(). "\r\n";
[/php]

Damit weiss der Empfänger, wer die Mail geschrieben hat (ansonsten steht der Standard des Webservers drin). X-Mailer ist das Mail-Programm (alles mit X- davor ist kein Standard, also irgendwelche Extraangaben.

Dazu müssen dann noch folgende angaben:

[php]
$Header.= "MIME-Version: 1.0\r\n";
$Header.= "Content-Type: multipart/related; boundary=\"".$mime_boundary."\"; type=\"text/plain\"\r\n";

Damit sagst du, dass deine Mail mehrere unterschiedliche Teile enthält. ausserdem legst du einen Begrenzer der einzelnen Teile fest ($mime_boundary).

Der Trenner sollte irgendwas eindeutiges, zufälliges sein:


$mime_boundary = "" . md5(uniqid(mt_rand(), 1));
[/php]

Dann kommt der erste Teil (Text) der Mail:

[php]
$MailBody = "--".$mime_boundary."\r\n";
$MailBody.= "Content-Type: Text/plain\r\n";
$MailBody.= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
$MailBody.="Hier steht mein Text";
$MailBody.= "\r\n\r\n";
$MailBody.= "--".$mime_boundary."\r\n";

Mit --$mime_boundary legst du die Grenzen eines Teils fest. \r\n steht für einen Zeilenumbruch. Zeilenumbrüche sind extrem wichtig, da darüber der Aufbau der Mail bzw. der Inhalte gesteuert wird. (\r\n ist die Windows Methode für Zeilenumbrüche (im Skript von mir war es auch unter Novell so), andere Systeme nutzen nur \r oder auch mal nur \n. Am besten machst du dafür eine eigene Varible, dann ist das ändern einfacher ;) Weiss im Moment nicht, ob es da eine automatisierte Version zum ermitteln des Zeilenumbruchs gibt.

Als nächstes willst du das Bild an die Mail anhängen, das geht so:


$fp = fopen ($ImageLocation, "rb");
$str = fread ($fp, filesize ($ImageLocation));
$data = chunk_split(base64_encode($str));
$content.= "Content-Type: image/gif\r\n";
$content.= "Content-ID: <$CID.$ImgName>\r\n";
$content.= "Content-Transfer-Encoding: base64\r\n";
$content.= "Content-Disposition: inline; filename=\"$ImgName\"\r\n\r\n";
[/php]

Hier liest du das Bild ein und wandelst es in Text um (eine EMail darf nur Ascii Zeichen enthalten). Ausserdem braucht jeder anhang eine (am bestern weltweit) eindeutige ID.

$CID = md5(uniqid (rand(), 1));

Die ID ist dazu da, um in der Mail auf den Anhang zuzugreifen. Weltweit eindeutig deshalb, weil es mit diesem Verfahren (und das ist auch so gewollt) möglich ist, in einer Mail auf einen Anhang einer anderen Mail zuzugreifen. Alles was man dazu wissen muss, ist die Anhang-ID.

Du könntest also theoretisch einen HTML-Newsletter versenden, in dem nur die Begrüßungsmail dein Logo beinhaltet. Alle späteren Mails greifen darauf zu. Das spart natürlich Bandbreite, setzt aber vorraus, dass die Mail auch vorhanden ist ;)

Deine Mail musst du dann noch zusammenfügen:

[php]
$content.= $data;
$MailBody.= $content;
$MailBody.= "--".$mime_boundary."--\r\n";

Damit hängst du dein Bild an den bildheader und das wiederum an den MailBody.

Dann absenden und gut:


mail($MailTo, $MailToSubject, $MailBody, $Header);
[/php]

Wenn du eine HTML Mail versenden willst geht das ähnlich, nur der Content-Type ist eben text/HTML und die Codierung sollte mit angegeben werden (mein Script war auch von einer HTML Mail, hab das hier nur in text/plain geändert). Da wo dein Text steht, kann dann HTML hin und wird entspr. Interpretiert vom Client. Bilder im HTML hängst du genauso als Anhang an, mit eindeutiger ID. Als [b]<img src[/b] für das bild gibst du aber keine URL oder so an, sondern genau diese ID des Anhangs.

Weiteres dazu findest du z.B. hier:

http://de.wikipedia.org/wiki/E-Mail#Technische_Details

oder

http://www.heise.de/ct/99/08/152/

Du kannst dir auch die entsprechende RFC durchlesen, da steht das genau, wie die Mail aufgebaut sein muss und wie das mit dem Anhang ist. Hab die Nummer aber nicht mehr im Kopf (wegen dem Anhang) und meine Lesezeichen sind dazu mittlerweile auch schon weg :(

Daraus hab ich aber all das heraus, was ich für mein Skript gebraucht hab.

EDIT:

in einer anderen Version des Skripts hab ich \r\n durch $EOL ersetzt. Hab leider das falsch hier genommen, würde dir aber empfehlen, das auch so zu ersetzen (steht ja auch oben irgendwo).

EDIT2:

Ach ja, am Ende steht wieder das --$mail_boundary, nur diesmal noch gefolgt von noch einem --, so wird das Ende der Mail signalisiert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

also ich muss noch sagen, von sachen mail hab ich jetzt nicht den riesen plan, aber du meintest doch, das outlook beim einfügen eines bildes, das bild als anhang dabei hat und in der mail auf dieses bild verwiesen wird?

so kannst du doch das bild dranhängen und drauf verweisen

mom, ich mach das jetzt mal ... :)

so, quelltext der mail hatte

<IMG 

src="cid:289132109@23122005-3475">

fürs bild

cid... war is dat denn? Content-id O_O

na wie auch immer, dieser thread scheint genaus das thema zu behandeln

http://www.selfphp.de/forum/archive/index.php/t-7737.html

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstmal danke für die Super antwort!

nur leider kommt das bild nicht als bild an! :-(



Hier steht mein Text

Content-Type: image/jpeg
Content-ID: <58b1de6b4314db691afc2fc403d3b1fc.image001.jpg>
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=mage001.jpg"

/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAQCAwMDAgQDAwMEBAQEBQkGBQUFBQsICAYJDQsNDQ0L
DAwOEBQRDg8TDwwMEhgSExUWFxcXDhEZGxkWGhQWFxb/2wBDAQQEBAUFBQoGBgoWDwwPFhYWFhYW
FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhb/wAARCAK8AgADASIA
AhEBAxEB/8QAHQABAAAHAQEAAAAAAAAAAAAAAAECBAUGBwgDCf/EAGYQAAEDAwEEAwcLDgoFCgYC
+t6vqPCP8A89Z9e+/oX32x8YKd/Qvvtj4wV8hO/p/35J+NV6aG
dPx/y2V8cr00/C/+Xq+o8Iv0es+vff0L77Y+MFO/Yf32x8YK+QZnT88J8n45XpqVU+4D/p8r45Xp

....

+rUolKbbZ32HN5ZZQ0T44R67gjhWn
q26NVVY7S+8rkilKVaBX0M9SX/m/Xn+8Tv0DNfPOvoZ6kt/N/vP94nfoGa4vD/mT50RLQ6guP/IH
3/eMb4pPoqppS7FkU3g63/eMb4pPop4Ot/3jG+KT6KqaUuxZFN4Ot/3jG+KT6KeDrf8AeMb4pPoq
ppS7FkSR2WWEbjLSG05zhCQBn3KnpSoJP//Z
----
[/PHP]

[PHP]
$Empfaenger = "ReichMio@gmx.de";

$Betreff = "Weihnachtsgruesse!";


$Trenner = md5(uniqid(time()));

$Header = "From: Weihnachtsgruesse<test@test.de>";

$Header .= "\r\n";

$Header .= "MIME-Version: 1.0";

$Header .= "\r\n";

$Header .= "Content-Type: multipart/related; boundary=$Trenner";

$MailBody = "--".$Trenner."\r\n";
$MailBody.= "Content-Type: Text/plain\r\n";
$MailBody.= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
$MailBody.="Hier steht mein Text";
$MailBody.= "\r\n\r\n";
$CID = md5(uniqid(rand(),1));

$ImgName = "image001.jpg";
$ImageLocation = "image001.jpg";

$fp = fopen ($ImageLocation, "rb");
$str = fread ($fp, filesize ($ImageLocation));
$data = chunk_split(base64_encode($str));
$content.= "Content-Type: image/jpeg\r\n";
$content.= "Content-ID: <$CID.$ImgName>\r\n";
$content.= "Content-Transfer-Encoding: base64\r\n";
$content.= "Content-Disposition: inline; filename=\"$ImgName\"\r\n\r\n";

$content.= $data;
$MailBody.= $content;
$MailBody.= "--".$mime_boundary."--\r\n";

mail($Empfaenger, $Betreff, $MailBody, $Header);

das komische an der ganze sache ist auch noch, dass er mir im header bei


$content.= "Content-Transfer-Encoding: base64\r\n";
$content.= "Content-Disposition: inline; filename=\"$ImgName\"\r\n\r\n";
[/PHP]

nicht image001.jpg sondern nur mage001.jpg hinschreibt.. (siehe oben)

was mache ich falsch ?

Link zu diesem Kommentar
Auf anderen Seiten teilen


--eb65e1e765cfe4083ae4ae5abb7909b5 Content-Type: Text/plain Content-Transfer-Encoding: quoted-printable Hier mein Text Content-Type: image/jpeg Content-ID: <4dc96f82761ba5483dfdf5ca9a55921d.image001.jpg> Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="image001.jpg" /9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAQCAwMDAgQDAwMEBAQEBQkGBQUFBQsICAYJDQsNDQ0L DAwOEBQRDg8TDwwMEhgSExUWFxcXDhEZGxkWGhQWFxb/2wBDAQQEBAUFBQoGBgoWDwwPFhYWFhYW FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhb/wAARCAK8AgADASIA AhEBAxEB/8QAHQABAAAHAQEAAAAAAAAAAAAAAAECBAUGBwgDCf/EAGYQAAEDAwEEAwcLDgoFCgYC AwECAwQABREGBxIhMRNBUQgUFSJhcdEJMjdTgZGSk5WysxgjNUJSVFVWdHWUobHSFhczOFdic3bB 0yRDcoLhNDZER2SDoqO08UVjZYTC8CVGZial/8QAGwEBAAIDAQEAAAAAAAAAAAAAAAEDAgQFBgf/ xABBEQACAQIDAgcOBgEFAQEBAAAAAQIDEQQhMRJBBRNRcZGhsQYUFSIzNFJTYYHB0eHwFjI1QnKS YyMkQ4LxYiXi/9oADAMBAAIRAxEAPwDv6pJDzTDRdfdQ2hPNS1AAe6anrRPqjyQvuVruhXFKpsQK HUR06edXYei61WNJO12l0mM5bEXLkN1C62s8rlE+PT6amFztv4Qi/HJ9NfHdESOB4rSB5q9UNISO Ax5ia9Iu5epvqLoNB8Ix9E+wfhK3ff8AG+OT6aj4Rt/39G+NT6a+PoGORV8I1ON/qcX8M1ku5afr Or6keEV6J9f/AAjb/v6N8an008I2/wC/o3xqfTXyBy77a58M1MFvD/XOfDNT+Fpet6vqPCK9E+vn hCB9+x/jU+mnhCB9+x/jU+mvkJ0j+P5d34w0D0gf9Jd+MNPwrL1vV9SPCP8A8n187/g/+KT6KeDrf94xvik+iqmlLsWRTeDrf94xvik+ing63/eMb4pPoqppS7FkU3g63/eMb4pPop4Ot/3j

...
G+KT6KqaUuxZFN4Ot/3jG+KT6KeDrf8AeMb4pPoqppS7FkU3g63/AHjG+KT6KeDrf94xvik+iqml LsWRTeDrf94xvik+ing63/eMb4pPoqppS7FkU3g63/eMb4pPop4Ot/3jG+KT6KqaUuxZFN4Ot/3j G+KT6KeDrf8AeMb4pPoqppS7FkU3g63/AHjG+KT6KeDrf94xvik+iqmlLsWRTeDrf94xvik+ing6 3/eMb4pPoqppS7FkU3g63/eMb4pPop4Ot/3jG+KT6KqaUuxZFN4Ot/3jG+KT6KeDrf8AeMb4pPoq ppS7FkSR2WWEbjLSG05zhCQBn3KnpSoJP//Z --eb65e1e765cfe4083ae4ae5abb7909b5--
From: Weihnachtsgruesse MIME-Version: 1.0 Content-Type: multipart/related; boundary=eb65e1e765cfe4083ae4ae5abb7909b5
[/PHP]

hab die bilddaten gekürzt.. ich hab keine ahnung, wieso es nicht geht :-(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ganze läuft auf einem Linuxsystem.

wie ich oben schon gepostet habe, kommt folgendes bei mir an


Hier mein Text

Content-Type: image/jpeg
Content-ID: <3d335fd29e2bb5ee3a733a060ff2c35e.image001.jpg>
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=mage001.jpg"

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
...
LsWRTeDrf94xvik+ing63/eMb4pPoqppS7FkU3g63/eMb4pPop4Ot/3jG+KT6KqaUuxZFN4Ot/3j
G+KT6KeDrf8AeMb4pPoqppS7FkU3g63/AHjG+KT6KeDrf94xvik+iqmlLsWRTeDrf94xvik+ing6
3/eMb4pPoqppS7FkU3g63/eMb4pPop4Ot/3jG+KT6KqaUuxZFN4Ot/3jG+KT6KeDrf8AeMb4pPoq
ppS7FkSR2WWEbjLSG05zhCQBn3KnpSoJP//Z

[/PHP]

die bilddaten habe ich wieder gekürzt.. ausser du willst sie ganz ..

Link zu diesem Kommentar
Auf anderen Seiten teilen


--eb65e1e765cfe4083ae4ae5abb7909b5 

Content-Type: Text/plain 

Content-Transfer-Encoding: quoted-printable 

Hier mein Text 

[b]Hier fehlt der Trenner![/b]

Content-Type: image/jpeg 

Content-ID: <4dc96f82761ba5483dfdf5ca9a55921d.image001.jpg>

Content-Transfer-Encoding: base64 Content-Disposition: inline;

 filename="image001.jpg"

siehe oben...

2mal Zeilenumbruch und der Trenner nach dem Text

Link zu diesem Kommentar
Auf anderen Seiten teilen

problem: mein htmlcode wird nicht angezeigt :-(

Du hast als Content-Type auch text/plain. Dass der Inhalt als HTML interpretiert werden soll weiss der Client also gar nicht.


$MailBody.= "Content-Type: Text/HTML; charset=iso-8859-1$EOL";
[/php]

$EOL = "\r\n" (oder was immer du brauchst)

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Jahre später...

Hallo,

ich bin zufällig au der Suche nach einer Lösung für mein Problem (Bild im Anhang einer Mail zu versenden und in der Mail zur Darstellung darauf zu zugreifen) auf diesen mittlerweile schon über 4 Jahren alten Thread gestoßen.

Ich bin genauso vorgegangen, wie es JesterDay gepostet hat.

Leider mag es bei mir überhaupt nicht klappen:rolleyes:.

Das Bild kommt als wilder Textsalat an, was meinen Provider dazu verführt, diese Mail gleich mal in den Spam Ordner zu verbannen.

Mein Skript sieht wie folgt aus:

<?php

$Empfaenger = "testmail@an_mich.de";

$Betreff = "Testmail!";

$mime_boundary = "" . md5(uniqid(mt_rand(), 1));

$Header = "From: Andi<testmail@an_mich.de>";
$Header.= "MIME-Version: 1.0\r\n";
$Header .= "\r\n";
$Header.= "Content-Type: multipart/related; boundary=\"".$mime_boundary."\"; type=\"text/plain\"\r\n";


$MailBody = "--".$mime_boundary."\r\n";
$MailBody.= "Content-Type: Text/plain\r\n";
$MailBody.= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
$MailBody.="Hier steht mein Text";
$MailBody.= "\r\n\r\n";
$MailBody.= "--".$mime_boundary."\r\n";

$CID = md5(uniqid(rand(),1));

$ImgName = "bild.jpg";
$ImageLocation = "bild.jpg";

$fp = fopen ($ImageLocation, "rb");
$str = fread ($fp, filesize ($ImageLocation));
$data = chunk_split(base64_encode($str));
$content.= "Content-Type: image/jpeg\r\n";
$content.= "Content-ID: <$CID.$ImgName>\r\n";
$content.= "Content-Transfer-Encoding: base64\r\n";
$content.= "Content-Disposition: inline; filename=\"$ImgName\"\r\n\r\n";

$content.= $data;
$MailBody.= $content;
$MailBody.= "--".$mime_boundary."--\r\n";

mail($Empfaenger, $Betreff, $MailBody, $Header);
?>[/PHP]

Die ankommende Mail sieht so aus:

[PHP]Content-Type: multipart/related; boundary="eea6c52cc7f29eb32dd00fb707c68c92"; type="text/plain"


--eea6c52cc7f29eb32dd00fb707c68c92
Content-Type: Text/plain
Content-Transfer-Encoding: quoted-printable

Hier steht mein Text

--eea6c52cc7f29eb32dd00fb707c68c92
Content-Type: image/jpeg
Content-ID: <3bd59b25e1c986f7b30741ccaf1fd6c3.bild.jpg>
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="bild.jpg"

/9j/4AAQSkZJRgABAgEASABIAAD/4QzSRXhpZgAATU0AKgAAAAgACwEPAAIAAAAJAAAAkgEQAAIA
AAANAAAAmwESAAMAAAABAAEAAAEaAAUAAAABAAAAqAEbAAUAAAABAAAAsAEoAAMAAAABAAIAAAEx
AAIAAAAcAAAAuAEyAAIAAAAUAAAA1AITAAMAAAABAAIAAIKYAAIAAAAFAAAA6IdpAAQAAAABAAAA
8AAAA0xGVUpJRklMTQBGaW5lUGl4UzJQcm8AAAr8gAAAJxAACvyAAAAnEEFkb2JlIFBob3Rvc2hv

Bilddaten sind wie es ReichMio gemacht gat gekürzt...

Hoffe jemand (insbesondere JesterDay) kann mir bei dieser Sache unter die Arme greifen!

Viele Grüße

Andi

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 10 Monate später...

Hallo !

So, die Seite baut sich langsam auf und ich fange schonmal an zu Tippen.

Zumindest habe ich diesem Beitrag hier gefunden. Allerdings klappt das bei mir alles noch nicht so.

Mein Problem:

Ich kann praktisch nur an der HTML-Ausgabe der Mail etwas ändern, also den $content selbst, der dann "irgendwo" als "MailBody" ausgegeben wird.

Im HTML-Teil wird auch eine Grafik ausgegeben, der Code ist folgender:


  <tr valign="top" width="100%">

     <td width="100%"><img src="cid:vendor_image" alt="vendor_image" width="100%"  /></td>

  </tr>

Wobei $vendor_image den kompletten http-Pfad inklusive des Dateinamens und der CID-Endung enthält. Diese CID-Endung wurde beim Hochladen des Firmenlogos über das Shopsystem einfach an die Datei hintendrangehängt. Das klappt also. Nun möchte ich aber eine 2te Grafik in das email-template einfügen. Vom Aufbau her ist die template-datei etwa so: <html> <head> </head> <body> </body> </html> Ich versuche also über dem HTML-Teil noch ein PHP-Script zu setzen, der in etwa so aussieht:

<?php

  $bildname = "12345_cid_12345.logo.jpg";

  $bildpfad = "./Joomla/components/com_virtuemart/shop_image/vendor/12345_cid_12345.logo.jpg";

  // $bildpfad = "http://meinedomain/Joomla/components/com_virtuemart/shop_image/vendor/12345_cid_12345.logo.jpg";

  $fp = fopen ($bildpfad, "rb");

  $CID = "12345_cid_12345";

  $str = fread ($fp, filesize ($bildpfad));

  $daten = chunk_split(base64_encode($str));

  $inhalt.= "Content-Type: image/jpg\r\n";

  $inhalt.= "Content-ID: <$CID.$bildname>\r\n";

  $inhalt.= "Content-Transfer-Encoding: base64\r\n";

  $inhalt.= "Content-Disposition: inline; filename=\"$bildname\"\r\n\r\n";

  $inhalt.= $daten;

  echo $inhalt;

Alleine die Datei mit fopen zu öffnen scheint zu scheitern. Zumindest wird ein klares FALSE ausgegeben, aber nur wenn der Pfad mit "./" beginnt.

Muss fopen nun nur den PFAD enthalten oder PFAD MIT DATEI?

Muss diese CID im Dateinamen davorgesetzt werden?

Enhält Content-ID dann die CID+Dateinamen mit CID?

Geht das überhaupt so, wie ich mir das vorstelle?

Es grüßt und dankt

Carsten

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...