Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Bild via E-Mail schicken (https://www.delphipraxis.net/103668-%5Bphp%5D-bild-via-e-mail-schicken.html)

Chrissi91 19. Nov 2007 19:15


[PHP] Bild via E-Mail schicken
 
Hi,

ich möchte gerne, dass wenn ich die URL http://www.meineseite.de/upload.php?...sktop\test.jpg aurufe, das Bild als Anhang an meine E-Mailadresse sendet ohne irgendwelche Prüfungen, da das Script nur für mich ist.

Nun weiß ich wie man E-Mails schickt und wie man Dateien hochlädt.

Code:
copy($thefile,"/pfad/zum/neuen/direktory/name.endung");
Damit kann ich Dateien auf den Server hochladen. Wie ich E-Mails verschicke, weiß ich auch. Wie würde sich das am Besten kombnieren lassen? Kann ich die Datei vom PC nicht gleich per Anhang als Mail schicken oder muss ich die JPG vorher erst hochladen?

Wie lässt sich das am Schnellsten realisieren?

kujin1000 19. Nov 2007 19:16

Re: [PHP] Bild via E-Mail schicken
 
bin mir doch nicht sicher... :wiejetzt:

Chrissi91 19. Nov 2007 19:18

Re: [PHP] Bild via E-Mail schicken
 
Zitat:

Ja ganz einfach. Label1.caption := ' Du Stinkst nach fisch';

:dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp: :dp:
Und bei dir schreibe ich gleich Close; hin. Bitte vernünftige beiträge. Wenn ich recht gelesen habe, wurdest du schonmal ermahnt. Jetzt passt auch das DP-Smily ^^

:dp:

DeddyH 19. Nov 2007 19:18

Re: [PHP] Bild via E-Mail schicken
 
PHP läuft auf dem Webserver und kann daher wohl auch nur Dateien versenden, die sich auch auf diesem befinden. Also müsstest Du das Bild erst hochladen und dann verschicken. Finde ich ein bisschen umständlich, Du nicht?

@kujin1000: was sagt Dein Arzt, besteht noch Hoffnung auf Heilung?

Chrissi91 19. Nov 2007 19:24

Re: [PHP] Bild via E-Mail schicken
 
Ja, bisschen umständlich. Gibts es denn nichts einfacheres? Deshalb frage ich ja ... :roll:

DeddyH 19. Nov 2007 19:25

Re: [PHP] Bild via E-Mail schicken
 
*Ääähhh*... Thunderbird z.B.?

Chrissi91 19. Nov 2007 19:33

Re: [PHP] Bild via E-Mail schicken
 
Ich möchte das aber von jedem PC aus aufrufen über die URL. Die Win95 Rechner in der Schule haben kein Thunderbird. ^^

Also eine Alternative in Verbindung mit PHP gibt es nicht? Naja ... dann mach ich mich mal ans Werk ... ^^

DeddyH 19. Nov 2007 19:35

Re: [PHP] Bild via E-Mail schicken
 
Wie schon gesagt, Pic hochladen und dann per mail() vom Server aus versenden.

[edit] BTW: anstatt copy besser move_uploaded_file verwenden (eine von vielen Quellen) [/edit]

Chrissi91 19. Nov 2007 20:19

Re: [PHP] Bild via E-Mail schicken
 
Er will nicht uploaden. Jetzt bitte nicht auslachen. :lol:

Code:
<?php
   
  move_uploaded_file('C:\Dokumente%20und%20Einstellungen\Laptop\Desktop\bild.jpg','/srv/www/vhosts/pyrgo.de/httpdocs/php/test/test.jpg');

?>
Verzeichnis test hat CHMOD 777 und der Serverpfad ist richtig (habe ich über PHP_Info ausgelesen)

Die Datei existiert auch mit Sicherheit. Woran könnte es liegen?

EDIT:

file_uploads ON
upload_max_filesize 2M (Datei hat 260kb)
upload_tmp_dir no value (liegts daran vll?)

Valle 19. Nov 2007 20:29

Re: [PHP] Bild via E-Mail schicken
 
%20 anstelle eines Leerzeichen funktioniert in PHP nicht.

Code:
<?php
   
move_uploaded_file(rawurldecode('C:\Dokumente%20und%20Einstellungen\Laptop\Desktop\bild.jpg'),'/srv/www/vhosts/pyrgo.de/httpdocs/php/test/test.jpg');

?>
http://de.php.net/manual/de/function.rawurldecode.php

Wie wäre es mal mit einem PHP Highlighter? :stupid:

Mit freundlichen Grüßen,

Valle

Chrissi91 19. Nov 2007 20:38

Re: [PHP] Bild via E-Mail schicken
 
Das ist nicht das Problem.

Es funzt weder

rawurldecode('C:\Dokumente%20und%20Einstellungen\L aptop\Desktop\bild.jpg')

noch

'C:\Dokumente und Einstellungen\Laptop\Desktop\bild.jpg'

noch

'C:\Dokumente%20und%20Einstellungen\Laptop\Desktop \bild.jpg'

In dieser Hinsicht probiere ich eigentlich immer alle Varianten aus.

Valle 19. Nov 2007 20:44

Re: [PHP] Bild via E-Mail schicken
 
Ich sehe grade, sind diese zwei Verzeichnisse nicht etwas widersprüchlich? :gruebel:

C:\Dokumente%20und%20Einstellungen\Laptop\Desktop\ bild.jpg'
'/srv/www/vhosts/pyrgo.de/httpdocs/php/test/test.jpg'




Du kannst ja auch mal mit is_dir($dir) überprüfen, ob beide Verzeichnisse vorhanden sind, bzw. ob sie existieren. Ich denke, dass mindestens eines von beiden nicht gehen kann, da es ja zwei völlig unterschiedliche Varianten sind. Du kannst auch mal versuchen, zu checken, ob is_writable() funktioniert. Außerdem glaube ich, dass der erste Parameter eigentlich immer $_FILES['userfile']['tmp_name'] sein müsste. Oder ist das jetzt hier nur ein Beispiel?

Mit freundlichen Grüßen,

Valle

Chrissi91 19. Nov 2007 21:52

Re: [PHP] Bild via E-Mail schicken
 
Also. Erstmal habe ich ein paar Tests gemacht:

Code:
<?php
   
   if(is_dir('C:\Dokumente und Einstellungen\Laptop\Desktop')){echo 'Lokaler Pfad existiert.

';}
   if(is_dir('/srv/www/vhosts/pyrgo.de/httpdocs/php/test')){echo 'Serverpfad existiert.

';}
   if(is_writable('/srv/www/vhosts/pyrgo.de/httpdocs/php/test')){echo 'Serverpfad ist beschreibbar.

';}
   //move_uploaded_file('C:\Dokumente und Einstellungen\Laptop\Desktop\ausweis.jpg','/srv/www/vhosts/pyrgo.de/httpdocs/php/test/test.jpg');

?>
Er gibt mir aus:

Serverpfad existiert.

Serverpfad ist beschreibbar.

Nur den lokalen Pfad mag er anscheinend nicht. Das mit dem $_FILES['userfile']['tmp_name'] habe ich auch gelesen. Aber ich wollte diesen ganzen Schnickschnack nicht und dachte mir so würde es auch gehen. Wie müsste ich es denn machen?

Code:
$_FILES['userfile'] = 'C:\Dokumente und Einstellungen\Laptop\Desktop\ausweis.jpg';
move_uploaded_file($_FILES['userfile']['tmp_name'],'/srv/www/vhosts/pyrgo.de/httpdocs/php/test/test.jpg');
So?

S2B 19. Nov 2007 22:25

Re: [PHP] Bild via E-Mail schicken
 
Zitat:

Zitat von Chrissi91
Nur den lokalen Pfad mag er anscheinend nicht. Das mit dem $_FILES['userfile']['tmp_name'] habe ich auch gelesen. Aber ich wollte diesen ganzen Schnickschnack nicht und dachte mir so würde es auch gehen. Wie müsste ich es denn machen?

Es geht nicht anders, es sei denn, du lädst die Datei per FTP-Client o.Ä. auf den Server. Der Server hat (zum Glück) keinen Zugriff auf deinen PC, kann also auch mit einem C:\bild.jpg nichts anfangen - selbst wenn es ein Windows-Server wäre. :wink:

Chrissi91 20. Nov 2007 07:10

Re: [PHP] Bild via E-Mail schicken
 
Hm ... das ist blöd. :( Es funktioniert zwar, aber eben nicht so, wie ich es möchte.

Code:
<?php
   
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data"><input type="file" name="userfile"><input type="submit" value=""></form>';
move_uploaded_file($_FILES['userfile']['tmp_name'],'/srv/www/vhosts/pyrgo.de/httpdocs/php/test/test.jpg');

?>
Er lädt es hoch, wenn ich auf Durchsuchen klicke, ein Bild auswählen und dann auf Submit drücke .... Er soll aber den Pfad schon mit dem Aufruf kennen. Es hat nichts gebracht, dass ich hier (<input type="file" name="userfile">) mit Value den Pfad reingeschrieben habe.

Es muss doch auch ohne gehen ... :gruebel:

Valle 20. Nov 2007 15:05

Re: [PHP] Bild via E-Mail schicken
 
Ach komm, so schwer ist es doch nicht. :zwinker:

Code:
<?

  if (isset($_FILES['userfile'])) {
    move_uploaded_file($_FILES['userfile']['tmp_name'], "/irgend/ein/pfad/datei.endung");
    mail(/* ... */);
  } else {
    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data"><input type="file" name="userfile"><input type="submit" value=""></form>';
  }

?>
Ist die Frage, wie du ein Bild als Anhang verschickst eigentlich geklärt?

Mit freundlichen Grüßen,

Valle

generic 20. Nov 2007 15:32

Re: [PHP] Bild via E-Mail schicken
 
Code:
   if ($_SERVER['REQUEST_METHOD']=='POST')
   {
     if (!(stristr($_FILES["Fotofile"]["type"],"image/"))||($_FILES["Fotofile"]["size"] > 5000000))
     { 
      $foto_fehler=true;
     } else {
      $to = "sdfgdsfg@dsfgdsfg.dfgsdfg";
                         $subject .= " dsgdsg: " ;
                        $headers = "From: Webformular <hjgkghk@hgjk.hgjk>" . "\r\n";
                        $headers .= "MIME-Version: 1.0" . "\r\n";
                      $headers .= "Content-type: " . mime_content_type($_FILES["Fotofile"]["tmp_name"]) . "\r\n";
                        $headers .= "Content-Transfer-Encoding: base64" . "\r\n";
                        $message = base64_encode(file_get_contents($_FILES["Fotofile"]['tmp_name'])) . "\r\n";
                        unlink($_FILES["Fotofile"]['tmp_name']);
                        mail($to, $subject, $message, $headers);
                        
    }
  }

Chrissi91 20. Nov 2007 15:35

Re: [PHP] Bild via E-Mail schicken
 
Zitat:

Zitat von Valle
Ach komm, so schwer ist es doch nicht. :zwinker:

Code:
<?

  if (isset($_FILES['userfile'])) {
    move_uploaded_file($_FILES['userfile']['tmp_name'], "/irgend/ein/pfad/datei.endung");
    mail(/* ... */);
  } else {
    echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" enctype="multipart/form-data"><input type="file" name="userfile"><input type="submit" value=""></form>';
  }

?>
Ist die Frage, wie du ein Bild als Anhang verschickst eigentlich geklärt?

Mit freundlichen Grüßen,

Valle

Ich glaube du verstehst nicht ganz. Wenn ich die PHP aufrufe, möchte ich als URL-Parameter den Pfad übergeben, also index.php?pfad=C:\.....

In der PHP soll dann die Datei hochgeladen, ohne die erst auswählen zu müssen. Allein mit dem Aufrufen des Links soll die Datei schon hochgeladen werden ohne den Duchsuchenbutton, etc.

Valle 20. Nov 2007 15:38

Re: [PHP] Bild via E-Mail schicken
 
Zitat:

Zitat von Chrissi91
Ich glaube du verstehst nicht ganz. Wenn ich die PHP aufrufe, möchte ich als URL-Parameter den Pfad übergeben, also index.php?pfad=C:\.....

In der PHP soll dann die Datei hochgeladen, ohne die erst auswählen zu müssen. Allein mit dem Aufrufen des Links soll die Datei schon hochgeladen werden ohne den Duchsuchenbutton, etc.

Achso. :pale: Das geht so ohne weiteres nicht. Eine mögliche Möglichkeit wäre, dass du mit Javascript arbeitest. Das heißt, du klickst auf den Link und dieser öffnet eine HTML Seite. Javascript füllt dann die Felder aus und sendet das Formular ab.

Eine andere Lösung kann ich mir nicht vorstellen, da der PHP-Server ja (zum Glück) keinen Zugriff auf den Client-PC hat.

Mit freundlichen Grüßen,

Valle

Chrissi91 20. Nov 2007 15:45

Re: [PHP] Bild via E-Mail schicken
 
Hm ... da ich die URL mit Delphi aufrufe, könnte ich die seite auch mit Delphi ausfüllen.

Hey ... du hast mich gerade auf die Idee gebracht. ;)

THX

Chrissi91 20. Nov 2007 16:25

Re: [PHP] Bild via E-Mail schicken
 
Mist. Das geht ja gar nicht ....

Siehe: http://www.delphipraxis.net/internal...ct.php?t=87475

Jetzt sind wir wieder am Anfang. Jemand noch eine bessere Idee? Auf JS will ich eigentlich nicht zurückgreifen. Nicht jeder PC hat Javascript und da kenn ich mich auch null aus.

Valle 20. Nov 2007 17:03

Re: [PHP] Bild via E-Mail schicken
 
Zitat:

ohne irgendwelche Prüfungen, da das Script nur für mich ist.
:gruebel:

Notfalls eben mit idHTTP oder selber machen mit TClientSocket. So schwer ist das HTTP Protokoll nicht. ;) Javascript kann dir mit Sicherheit irgendwer (vielleicht auch ich) machen.

Mit freundlichen Grüßen,

Valle

Chrissi91 20. Nov 2007 17:14

Re: [PHP] Bild via E-Mail schicken
 
Hast du dir mal den Thread angeguckt, den ich verlinkt habe? Da steht nämlich, dass aus Sicherheitsgründen diese Funktion deaktiviert wurde, sodass man nicht mehr so leicht uploaden kann.

Habe Folgendes gefunden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
  HttpServer, Response: String;
begin
  MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
  try
    httpMain.Request.ContentType := MultiPartFormDataStream.RequestContentType;
    MultiPartFormDataStream.AddFile('userfile', 'C:\Dokumente und Einstellungen\Laptop\Desktop\ausweis.jpg', '');
    MultiPartFormDataStream.PrepareStreamForDispatch;
    MultiPartFormDataStream.Position := 0;
    Response := httpMain.Post('http://www.*******.de/temp/php/index.php', MultiPartFormDataStream);
  finally
    MultiPartFormDataStream.Free;
  end;
Unit habe ich aus dem Thread: http://www.delphipraxis.net/internal...ct.php?t=98243

Nur leider funktioniert es bei mir nicht ... :( Er lädt nichts hoch, gibt aber auch keinen Fehler aus. :cry:

Valle 20. Nov 2007 18:31

Re: [PHP] Bild via E-Mail schicken
 
Zitat:

Zitat von Chrissi91
Hast du dir mal den Thread angeguckt, den ich verlinkt habe? Da steht nämlich, dass aus Sicherheitsgründen diese Funktion deaktiviert wurde, sodass man nicht mehr so leicht uploaden kann.

Ja, ich meinte statt "Javascript kann dir mit Sicherheit irgendwer (vielleicht auch ich) machen. " eigentlich eher sowas wie "Javascript hätte dir mit Sicherheit irgendwer (vielleicht auch ich) machen können, wenn es ginge". :zwinker:

http://www.matlus.com/scripts/websit...PartFormData&5

Mit freundlichen Grüßen,

Valle


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz