Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Mail'e Dosya Ekleme # KAYNAK #

Konu, 'PHP' kısmında LoS.ToF tarafından paylaşıldı.

  1. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    PHP:
    <?php

    /*


     this class encapsulates the PHP mail() function.
     implements CC, Bcc, Priority headers


    @version        1.3

    - added ReplyTo( $address ) method
    - added Receipt() method - to add a mail receipt
    - added optionnal charset parameter to Body() method. this should fix charset problem on some mail clients

    @example

            $m= new Mail; // create the mail
            $m->From( "leo@isp.com" );
            $m->To( "destination@somewhere.fr" );
            $m->Subject( "the subject of the mail" );

            $message= "Hello world!\nthis is a test of the Mail class\nplease ignore\nThanks.";
            $m->Body( $message);        // set the body
            $m->Cc( "someone@somewhere.fr");
            $m->Bcc( "someoneelse@somewhere.fr");
            $m->Priority(4) ;        // set the priority to Low
            $m->Attach( "/home/leo/toto.gif", "image/gif" ) ;        // attach a file of type image/gif

            //alternatively u can get the attachment uploaded from a form
            //and retreive the filename and filetype and pass it to attach methos

            $m->Send();        // send the mail
            echo "the mail below has been sent:<br><pre>", $m->Get(), "</pre>";



    @author     Saravanan(winsaravanan@yahoo.com,ssaravanan@teledata-usa.com)

    */


    class Mail
    {
            
    /*
            list of To addresses
            @var        array
            */
            
    var $sendto = array();
            
    /*
            @var        array
            */
            
    var $acc = array();
            
    /*
            @var        array
            */
            
    var $abcc = array();
            
    /*
            paths of attached files
            @var array
            */
            
    var $aattach = array();
            
    /*
            list of message headers
            @var array
            */
            
    var $xheaders = array();
            
    /*
            message priorities referential
            @var array
            */
            
    var $priorities = array( '1 (Highest)''2 (High)''3 (Normal)''4 (Low)''5 (Lowest)' );
            
    /*
            character set of message
            @var string
            */
            
    var $charset "us-ascii";
            var 
    $ctencoding "7bit";
            var 
    $receipt 0;
            var 
    $content_type='';

    /*

            Mail contructor

    */

    function Mail()
    {
            
    $this->autoChecktrue );
            
    $this->boundary"--" md5uniqid("myboundary") );
    }


    function 
    Content_type($contenttype){

        
    $this->content_type=$contenttype;
        
    //echo $this->content_type;
        //echo '<br>';
        //exit();
    }

    /*

    activate or desactivate the email addresses validator
    ex: autoCheck( true ) turn the validator on
    by default autoCheck feature is on

    @param boolean        $bool set to true to turn on the auto validation
    @access public
    */
    function autoCheck$bool )
    {
            if( 
    $bool )
                    
    $this->checkAddress true;
            else
                    
    $this->checkAddress false;
    }


    /*

    Define the subject line of the email
    @param string $subject any monoline string

    */
    function Subject$subject )
    {
            
    $this->xheaders['Subject'] = strtr$subject"\r\n" "  " );
    }


    /*

    set the sender of the mail
    @param string $from should be an email address

    */

    function From$from )
    {

            if( ! 
    is_string($from) ) {
                    echo 
    "Class Mail: error, From is not a string";
                    exit;
            }
            
    $this->xheaders['From'] = $from;
    }

    /*
     set the Reply-to header
     @param string $email should be an email address

    */
    function ReplyTo$address )
    {

            if( ! 
    is_string($address) )
                    return 
    false;

            
    $this->xheaders["Reply-To"] = $address;

    }


    /*
    add a receipt to the mail ie.  a confirmation is returned to the "From" address (or "ReplyTo" if defined)
    when the receiver opens the message.

    @warning this functionality is *not* a standard, thus only some mail clients are compliants.

    */

    function Receipt()
    {
            
    $this->receipt 1;
    }


    /*
    set the mail recipient
    @param string $to email address, accept both a single address or an array of addresses

    */

    function To$to )
    {

            
    // TODO : test validité sur to
            
    if( is_array$to ) )
                    
    $this->sendto$to;
            else
                    
    $this->sendto[] = $to;

            if( 
    $this->checkAddress == true )
                    
    $this->CheckAdresses$this->sendto );

    }


    /*                Cc()
     *                set the CC headers ( carbon copy )
     *                $cc : email address(es), accept both array and string
     */

    function Cc$cc )
    {
            if( 
    is_array($cc) )
                    
    $this->acc$cc;
            else
                    
    $this->acc[]= $cc;

            if( 
    $this->checkAddress == true )
                    
    $this->CheckAdresses$this->acc );

    }



    /*                Bcc()
     *                set the Bcc headers ( blank carbon copy ).
     *                $bcc : email address(es), accept both array and string
     */

    function Bcc$bcc )
    {
            if( 
    is_array($bcc) ) {
                    
    $this->abcc $bcc;
            } else {
                    
    $this->abcc[]= $bcc;
            }

            if( 
    $this->checkAddress == true )
                    
    $this->CheckAdresses$this->abcc );
    }


    /*                Body( text [, charset] )
     *                set the body (message) of the mail
     *                define the charset if the message contains extended characters (accents)
     *                default to us-ascii
     *                $mail->Body( "mél en français avec des accents", "iso-8859-1" );
     */
    function Body$body$charset="" )
    {
            
    $this->body $body;

            if( 
    $charset != "" ) {
                    
    $this->charset strtolower($charset);
                    if( 
    $this->charset != "us-ascii" )
                            
    $this->ctencoding "8bit";
            }
    }


    /*                Organization( $org )
     *                set the Organization header
     */

    function Organization$org )
    {
            if( 
    trim$org != "" )  )
                    
    $this->xheaders['Organization'] = $org;
    }


    /*                Priority( $priority )
     *                set the mail priority
     *                $priority : integer taken between 1 (highest) and 5 ( lowest )
     *                ex: $mail->Priority(1) ; => Highest
     */

    function Priority$priority )
    {
            if( ! 
    intval$priority ) )
                    return 
    false;

            if( ! isset( 
    $this->priorities[$priority-1]) )
                    return 
    false;

            
    $this->xheaders["X-Priority"] = $this->priorities[$priority-1];

            return 
    true;

    }


    /*
     Attach a file to the mail

     @param string $filename : path of the file to attach
     @param string $filetype : MIME-type of the file. default to 'application/x-unknown-content-type'
     @param string $disposition : instruct the Mailclient to display the file if possible ("inline") or always as a link ("attachment") possible values are "inline", "attachment"
     */

    function Attach($filename,$filetype "",$disposition "inline")
    {

            if( 
    $filetype == "" )
                    
    $filetype "application/x-unknown-content-type";
                    
    //$filetype = "text/plain";



             
    $this->aattach[] = $filename;


            
    $this->actype[] = $filetype;
            
    $this->adispo[] = $disposition;

    }

    /*

    Build the email message

    @access protected

    */
    function BuildMail()
    {

            
    // build the headers
            
    $this->headers "";
    //        $this->xheaders['To'] = implode( ", ", $this->sendto );

            
    if( count($this->acc) > )
                    
    $this->xheaders['CC'] = implode", "$this->acc );

            if( 
    count($this->abcc) > )
                    
    $this->xheaders['BCC'] = implode", "$this->abcc );


            if( 
    $this->receipt ) {
                    if( isset(
    $this->xheaders["Reply-To"] ) )
                            
    $this->xheaders["Disposition-Notification-To"] = $this->xheaders["Reply-To"];
                    else
                            
    $this->xheaders["Disposition-Notification-To"] = $this->xheaders['From'];
            }

            if( 
    $this->charset != "" ) {
                    
    //global $contenttype;
                    
    $content_type=$this->content_type;
                    
    $this->xheaders["Mime-Version"] = "1.0";
                    
    $this->xheaders["Content-Type"] = "$content_type; charset=$this->charset";
                    
    $this->xheaders["Content-Transfer-Encoding"] = $this->ctencoding;
            }

            
    $this->xheaders["X-Mailer"] = "RLSP Mailer";

            
    // include attached files
            
    if( count$this->aattach ) > ) {

                    
    $this->_build_attachement();
            } else {
                    
    $this->fullBody $this->body;
            }

            
    reset($this->xheaders);
            while( list( 
    $hdr,$value ) = each$this->xheaders )  ) {
                    if( 
    $hdr != "Subject" )
                            
    $this->headers .= "$hdr$value\n";
            }


    }

    /*
            fornat and send the mail
            @access public
    */

    function Send()
    {
            
    //global $filename;

            
    $this->BuildMail();

            
    $this->strTo implode", "$this->sendto );


            
    $res = @mail$this->strTo$this->xheaders['Subject'], $this->fullBody$this->headers );

    }



    /*
     *                return the whole e-mail , headers + message
     *                can be used for displaying the message in plain text or logging it
     */

    function Get()
    {
            
    $this->BuildMail();
            
    $mail "To: " $this->strTo "\n";
            
    $mail .= $this->headers "\n";
            
    $mail .= $this->fullBody;
            return 
    $mail;
    }


    /*
            check an email address validity
            @access public
            @param string $address : email address to check
            @return true if email adress is ok
     */

    function ValidEmail($address)
    {
            if( 
    ereg".*<(.+)>"$address$regs ) ) {
                    
    $address $regs[1];
            }
             if(
    ereg"^[^@  ]+@([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-]{2}|net|com|gov|mil|org|edu|int)\$",$address) )
                     return 
    true;
             else
                     return 
    false;
    }


    /*

            check validity of email addresses
            @param        array $aad -
            @return if unvalid, output an error message and exit, this may -should- be customized

     */

    function CheckAdresses$aad )
    {
            for(
    $i=0;$icount$aad); $i++ ) {
                    if( ! 
    $this->ValidEmail$aad[$i]) ) {
                            echo 
    "Class Mail, method Mail : invalid address $aad[$i]";
                            exit;
                    }
            }
    }


    /*
     check and encode attach file(s) . internal use only

    */

    function _build_attachement()
    {

            
    $this->xheaders["Content-Type"] = "multipart/mixed;\n boundary=\"$this->boundary\"";

            
    $this->fullBody "This is a multi-part message in MIME format.\n--$this->boundary\n";
            
    $this->fullBody .= "Content-Type: text/html; charset=$this->charset\nContent-Transfer-Encoding: $this->ctencoding\n\n" $this->body ."\n";

            
    $sepchr(13) . chr(10);

            
    $ata= array();
            
    $k=0;
            
    // for each attached file, do...
            
    for( $i=0$i count$this->aattach); $i++ ) {

                    
    $filename $this->aattach[$i];
                    
    $basename basename($filename);
                    
    $ctype $this->actype[$i];        // content-type
                    
    $disposition $this->adispo[$i];
                    
    /*getting the original name of the file */

                    //echo $original_filename;

                    
    if( ! file_exists$filename) ) {
                            echo 
    "Class Mail, method attach : file $filename can't be found"; exit;
                    }

                   
    /* echo 'filename--'.$filename;
                      echo '<br>';
                   */

                    /*

                       the semicolon after the Content-type : $basename is important
                       since it was not there.This mail program
                       was not able to see the attachment for the past 1 month
                       --Saravanan 20/04/02

                   */

                    
    $subhdr"--$this->boundary\nContent-Type: $ctype;\n name=\"$basename\";\nContent-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n  filename=\"$basename\"\n";
                    
    //$subhdr= "--$this->boundary\nContent-type: $ctype;\n name=\"$filename\"\nContent-Transfer-Encoding: base64\nContent-Disposition: $disposition;\n  filename=\"$filename\"\n";
                    
    $ata[$k++] = $subhdr;
                    
    // non encoded line length
                    
    $lineszfilesize$filename)+1;
                    
    $fpfopen$filename'r' );
                    
    $ata[$k++] = chunk_split(base64_encode(fread$fp$linesz)));

                    
    fclose($fp);

            }

            
    $this->fullBody .= implode($sep$ata);

            
    //echo $this->fullBody;
    }


    // class Mail



    ?>
     
    Son düzenleme yönetici tarafından yapıldı: 30 Eylül 2002
  2. mkarabulut

    mkarabulut Misafir

    Eline sağlık...
    Bu class'ın örnek kullanımını da bir iki satır dahi olsa verseydin keşke...
     
  3. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    yazıyo zaten :D
     
  4. Sahin

    Sahin Daimi Üye

    Kayıt:
    28 Mayıs 2002
    Mesajlar:
    8,943
    Beğenilen Mesajlar:
    0
    Teşekkürler Lostof. Bu scripti kullanıp denedinmi hiç?
     
  5. LoS.ToF

    LoS.ToF Daimi Üye

    Kayıt:
    11 Ağustos 2002
    Mesajlar:
    1,088
    Beğenilen Mesajlar:
    0
    Meslek:
    PHP Developer
    Şehir:
    Antalya
    :D denemesem vermezdim :O
    Ama sizi kırmaz bir daha denerim... ama script içinde toplu dosya olayını çözemedim sanırım sadece 1 dosya yollayabiliyorsun... geliştireceğim gibi...

    Eğerki bulamazsam sanırım RFC okucam :(

    RFC okumayı sevmiyorum çok uzun oluyo namussuzlar.
     
    Son düzenleme yönetici tarafından yapıldı: 30 Eylül 2002