Oprettet lør. d. 12. februar 2000 kl. 23:35:22

reflex
reflex (20.130 point. Point ude: 225)

Send vedhæftede filer fra en form

Jeg er på jagt efter et lille script som kan sende info. fra en form videre til en mail adresse.
Men dette script skal også være istand til at sende en vedhæftet fil med!
Så vidt jeg ved er der en kommando i <form>'en der hedder: <input type=file osv. osv.> men denne kommando skulle vist ikke understøttes af de nuværende browsere. Jeg ved at man ved hjælp af lidt PHP kan sende en form med afsender,emne osv. men kan man også sende en vedhæftet fil med?
Og er det iøvrigt muligt at sende brevpapir (en baggrund) med i mail'en?

på forhånd tak :)
/ReFlex

Skrevet man. d. 14. februar 2000 kl. 00:23:04| #1

olebole
olebole (214.613 point)
Jo, 'input type=file' virker!
Ang. at sende: Jeg kikkede ind på www.php.net og fandt denne adresse:
http://renoir.vill.edu/ (...)
Der ligger et script, du kan bruge.

/VH
Ole Clausen

Skrevet tir. d. 15. februar 2000 kl. 12:03:58| #2

mknielsen
mknielsen (22.980 point)
Her er et script som kan gøre tricket med vedhæftede filer. Jeg har ikke selv lavet det!

<?
/*
Mail: An object to encapsulate the sending of email. Allows user-specified 
From: addresses, handles the encoding of attachments; conforms more or less to 
MIME standards.. Uses sendmail to send the mail, mimencode to do the MIME 
encoding, and zip to automatically zip attachments.

Contacting the author(s):
Brought to you by the team at Sequoia Softworks, http://www.sequoiasoft.com
Feel free to contact tony@sequoiasoft.com and tell us how you like it!
(Or to complain bitterly, report bugs, or suggest new features.)

Known shortcomings/bugs:
o guessMIMEType()only knows about a few MIME types. You can expand this as 
  you need.
o $mime_boundary in the Send() method should be randomly generated, but it 
  isn't likely to ever hurt anything in its current form

Example:
  require("Mail.phtml");
  $mymessage = new Mail();
  $mymessage->from = "php3.script@www.somedomain.net";
  $mymessage->to = "luckyuser@destination.org";
  $mymessage->subject = "This is your lucky day";
  $mymessage->headers["Reply-To"] = "webmaster@www.somedomain.net";
  $mymessage->headers["X-Extra-Header"] = "Pointless Header v3.0";
  $mymessage->body = "Doesn't it feel good to get mail?\nEspecially with files 
  attached!\n";
  $mymessage->attachments[0] = "tarball.tar.gz";
  $mymessage->attachments[1] = "images/smiling_countenance.gif";
  $mymessage->attachments[2] = "/usr/share/reference/jargondict.html";
  $mymessage->attachments[3] = "./core";
  $mymessage->attachments[4] = "/etc/passwd";  //naughty naughty!!
  $mymessage->ZipAttachments("your_files.zip"); //uncomment this to zip all 
                                                //the attachments into one big 
                                                //attachment.
  $mymessage->Send();
*/
class Mail {
    var $from;  //The sender
    var $to;  //The recipient
    var $subject;  //The subject line
    var $headers;  //A hash of additional headers (headername => headervalue)
    var $zipname;  //The name of the file the attachments are zipped into
                    //($zipname == false if attachments are to be sent 
                        //individually)
    var $attachments;  //An array of files to attach
    var $body;  //The body text of the message
     
      //Mail constructor: initializes vars to default values. 'Nuff said.
    function Mail() {
        $this->from =  "";
        $this->to =  "";
        $this->subject =  "";
        $this->headers = array();
        $this->zipname = false;
        $this->attachments = array();
        $this->body =  "";
    }
     
      //Auxiliary method, used to guess a file's MIME type
      //based on its extension. Doesn't know about too many
      //extensions right now
    function guessMIMEType($filename) {
          //GUESS MIME TYPE
        $filename = basename($filename);
        if(strrchr($filename, ".") == false) {
            return( "application/octet-stream");
        }
         
        $ext = strrchr($filename, ".");
        switch($ext) {
            case  ".gif":
                return  "image/gif";
                break;
            case  ".gz":
                return  "application/x-gzip";
            case  ".htm":
            case  ".html":
                return  "text/html";
                break;
            case  ".jpg":
                return  "image/jpeg";
                break;
            case  ".tar":
                return  "application/x-tar";
                break;
            case  ".txt":
                return  "text/plain";
                break;
            case  ".zip":
                return  "application/zip";
                break;
            default:
                return  "application/octet-stream";
                break;
        }
    }

      //Cute little convenience method. Supply it with a filename to 
      //zip attachments to, or supply it with false if attachments are
      //sent individually
    function ZipAttachments($name) {
        $this->zipname = $name;
    }

      //The workhorse method, does the actually sending of the mail.
      //Doesn't check for errors so be careful!
    function Send($sendmail =  "sendmail") {
        if($this->from ==  "")
            $fp = popen($sendmail .  " -i " . $this->to,  "w");
        else
            $fp = popen($sendmail .  " -i -f\"" . $this->from .  "\" 
" . $this->to,  "w");

        $mime_boundary =  "-1747901728-1448367683-913849620=:4553";
         
        if($fp == false)
            return false;
         
          //Write subject header   
        fwrite($fp, "Subject: " . $this->subject .  "\n");
     
          //Write user-defined headers   
        reset($this->headers);
        while(list($hdrname,$hdrval) = each($this->headers)) {
            fwrite($fp,$hdrname .  ": " . $hdrval .  "\n");
        }
         
          //If there are attachments, this needs to be a MIME message
        if(count($this->attachments) > 0) {
              //Write MIME headers
            fwrite($fp, "MIME-Version: 1.0\n");
            fwrite($fp, "Content-Type: multipart/mixed; BOUNDARY=\"" 
. $mime_boundary .  "\"\n");
            fwrite($fp, "\n");
              //Write dummy message body
            fwrite($fp, "  This message is in MIME format.  The 
first part should be readable text,\n");
            fwrite($fp, "  while the remaining parts are likely 
unreadable without MIME-aware tools.\n");
            fwrite($fp, "  Send mail to 
mime@docserver.cac.washington.edu for more info.\n");
            fwrite($fp, "\n");
             
              //Write message text
            fwrite($fp, "--" .  "$mime_boundary" .  "\n");
            fwrite($fp, "Content-Type: text/plain; charset=US-
ASCII\n");
            fwrite($fp, "\n");
            fwrite($fp,$this->body);
            fwrite($fp, "\n");
             
              //Handle attachments
            if($this->zipname != false) {  //IF we've been told to 
                                                        //zip the attachments
                fwrite($fp, "--" . $mime_boundary .  "\n");
                fwrite($fp, "Content-Type: application/zip; name=
\"". $this->zipname .  "\"\n");
                fwrite($fp, "Content-Transfer-Encoding: base64
\n");
                    //fwrite($fp,"Content-ID: " . $content_ID . "\n");
                fwrite($fp, "Content-Description:\n");
                fwrite($fp, "\n");
                $cmdline =  "zip - ";
        while(list($key, $attachment_name) =  each($this->attachments))
                    $cmdline .=  "$attachment_name ";
                $cmdline .=  "| mimencode -b";
                $pp = popen($cmdline, "r");
                while(!feof($pp)) {
                    $data = fread($pp,4096);
                    fwrite($fp,$data);
                }
                pclose($pp);
            }
            else {  //no need to zip the attachments, attach them 
                                //separately
        while(list($key, $attachment_name) = each($this->attachments)) {
                fwrite($fp, "--" . $mime_boundary .  "\n");
      fwrite($fp, "Content-Type: " . $this->guessMIMEType($attachment_name) .  "; 
      name=\"". basename($attachment_name) .  "\"\n");
            fwrite($fp, "Content-Transfer-Encoding: base64\n");
                      //fwrite($fp,"Content-ID: " . 
                                          //$content_ID . "\n");
                    fwrite($fp, "Content-Description:\n");
                    fwrite($fp, "\n");
                      $pp = popen( "mimencode -b $attachment_name", "r");
                    while(!feof($pp)) {
                        $data = fread($pp,4096);
                        fwrite($fp,$data);
                    }
                    pclose($pp);
                }
            }
             
            fwrite($fp, "--" . $mime_boundary .  "--\n");
        }
          //No need for a MIME message, so it's an RFC822 message
        else {
            fwrite($fp, "\n");
            fwrite($fp,$this->body);
        }
         
         
        pclose($fp);
    }
}
?>

Skrevet lør. d. 19. februar 2000 kl. 15:33:30| #3

reflex
reflex (20.130 point)
mknielsen> Jeg syntes ikke jeg kan få eks. til at virke, man jeg er heller ikke en ørn til PHP.

Jeg må forske lidt mere i <input type=file> sjoveren.

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger