2014-07-07 14 views
6

Wie kann ich abrufen und die Bindung an mich mit Mailgun POSTAnhang abrufen von Mailgun Formular Beitrag PHP

Die nach dem einige der Parameter

attachment-1  
{:filename=>"crabby.gif", :type=>"image/gif", :name=>"attachment-1", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-slsrkh>, :head=>"Content-Disposition: form-data; name=\"attachment-1\"; filename=\"crabby.gif\"\r\nContent-Type: image/gif\r\nContent-Length: 2785\r\n"} 

attachment-2  
{:filename=>"attached_файл.txt", :type=>"text/plain", :name=>"attachment-2", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-sudxuf>, :head=>"Content-Disposition: form-data; name=\"attachment-2\"; filename=\"attached_файл.txt\"\r\nContent-Type: text/plain\r\nContent-Length: 32\r\n"} 

Content-Type  
multipart/mixed; boundary="------------020601070403020003080006" 

Antwort

5

Also ich weiß, das über ein Formular Post geschickt speichern ist ein Jahr zu spät, aber ich hatte das gleiche Problem und herausgefunden, wie man die Anhänge herunterladen. Die Dateien in der Post sind in der Umgebungsvariablen $_FILES gespeichert. Die Informationen für jede Datei werden in etwa so aussehen:

Array 
(
    [attachment-1] => Array 
     (
      [name] => ATextFile.txt 
      [type] => text/plain 
      [tmp_name] => /tmp/php8zhmlU 
      [error] => 0 
      [size] => 70144 
     ) 
) 

Der Pfad zur Datei in tmp_name gespeichert ist, so dass in diesem Fall ist /tmp/php8zhmlU der vollständige Pfad zur Datei. move_uploaded_file überschreibt alle vorhandenen Dateien! Zum Herunterladen der alle Anhänge aus der POST schrieb ich eine Funktion:

function download_attachments($pathToDownloadDirectory) 
{ 
    foreach($_FILES as $file) 
    { 
     if($file['error'] == "0") 
     { 
      if(!(move_uploaded_file($file['tmp_name'], $pathToDownloadDirectory . $file['name']))) 
      { 
       return 0; 
      } 
     } 
     else 
     { 
      return 0; 
     }  
    } 
    return 1; 
} 

download_attachments("/Full/Path/To/Some/Dir/"); 

Dokumentation für dieses Top-found here.

+1

dank viel zum Download bereit. Das funktionierte. :-) –

+0

Can Sie klären dies ein wenig, vielleicht mit ein wenig Beispielcode. Ich habe das gleiche Problem – ratherBeKiting

+0

Referenzierung mailgun Dokumentation hier https://documentation.mailgun.com/quickstart-receiving.html#supported-actions-for-routes –

4
  1. Verwendung speichern Aktion von der Route Sitzung um Informationen sein können über Ihre E-Mail zu erhalten. (retrieving stored message
  2. json_decode "Attachments" Eigenschaft, um
  3. get api Schlüsselinformationen über Ihre Anlagen zu erhalten und PHP-Bibliothek, um api zu erhalten zu verwenden zu verwenden.

, wenn Sie die Liste von Anhängen decodiert JSon ist $-Dateien können Sie

$mgClient = new Mailgun('yourApiKey'); 

foreach ($files as $file){ 
    file_put_contents($file->name,$mgClient->get($file->url)->http_response_body);  
} 

tun jeden Befestigungs