ارسال ايميل با attach

شروع موضوع توسط Moein ‏24 آگوست 2005 در انجمن PHP

  1. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    سلام
    من دنباله يك كد براي ارسال ايميل با attach هستم چون مال خودم كار نميكنه و attach رو با حجم 1 بايت نشون ميده!
     
  2. miladmovie

    miladmovie مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    1,936
    تشکر شده:
    2
    برو اینجا یک سری کلاس آماده هست بگرد چیز خوبی می تونی آماده کنی
    در ضمن برای دانلود اول باید ثبت نام کنی
    http://www.phpclasses.org/browse/class/2.html
     
  3. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
  4. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    من برات تست می‌کنم نگران نباشD:
     
  5. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    من تست کردم خیلی خوب کار کرد و تونستم اشکال کد خودم رو بفهمم.
    ولی اسم فایل attach شده رو می‌نوشت مثلاً : D__pictures_ax1.jpg
    کد مال خودم این ایراد رو نداره.
    ضمناً وقتی آدرس یک فایل که تو چند تا فلدر هست رو بهش می‌دم این ارور رو می‌ده :
    کد:
    Warning: fopen(D:\Documents and Settings\Moein\My Documents\My Pictures\133732smallpic.gif): failed to open stream: Permission denied in d:\inetpub\wwwroot\webtoolz\fms.php on line 80
    
    Warning: filesize(): Stat failed for D:\Documents and Settings\Moein\My Documents\My Pictures\133732smallpic.gif (errno=2 - No such file or directory) in d:\inetpub\wwwroot\webtoolz\fms.php on line 80
    
    Warning: fread(): supplied argument is not a valid stream resource in d:\inetpub\wwwroot\webtoolz\fms.php on line 80
    
     
  6. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,344
    تشکر شده:
    1,314
    محل سکونت:
    یه خورده اونورتر
    بچه ها یه کد تمیز براتون دارم خودم پول بالاش دادم:
    این رو به اسم mailer.php ذخیره کنید:

    PHP:
    <?php
      
    class Mailer {

        var 
    $arrHeaders = array();
        var 
    $arrPriority = array("1 (Highest)""2 (High)""3 (Normal)""4 (Low)""5 (Lowest)");
        var 
    $blnReceipt false;
        var 
    $strHeaders "";

        function 
    AssembleMail () {
          if(
    $this->blnReceipt) {
            if(isset(
    $this->arrHeaders["Reply-To"])) {
              
    $this->arrHeaders["Disposition-Notification-To"] = $this->arrHeaders["Reply-To"];
            }
            else {
              
    $this->arrHeaders["Disposition-Notification-To"] = $this->arrHeaders["From"];
            }
          }

          
    $this->arrHeaders["Mime-Version"] = "1.0";
          
    $this->arrHeaders["X-Mailer"] = "PHP Mailer";
          
    $this->arrHeaders["X-Sender-IP"] = $this->strIP;

          
    reset($this->arrHeaders);

          if(
    count($this->arrAttachmentFilename) == 0) {
            
    $this->arrHeaders["Content-Type"] = "text/plain; charset=" $this->strCharacterSet "; format=flowed\n";
            
    $this->arrHeaders["Content-Transfer-Encoding"] = "8bit";
            
    $this->strMail $this->strBody "\n\n";
          }
          else {
            
    $this->arrHeaders["Content-Type"] = "multipart/mixed; boundary=\"" $this->strBoundary "\"";
            
    $this->strMail "This is a MIME encapsulated multipart message - please use a MIME compliant e-mail program to open it.\n\n";
            
    $this->strMail .= "--" $this->strBoundary "\n";
            
    $this->strMail .= "Content-Type: text/plain; charset=" $this->strCharacterSet "; format=flowed\n";
            
    $this->strMail .= "Content-Transfer-Encoding: 8bit\n\n";
            
    $this->strMail .= $this->strBody "\n\n";
            
    $this->BuildAttachments();
            
    $this->strMail .= "--" $this->strBoundary "--";
          }

          while(list(
    $strHeaderName,$strHeaderValue) = each($this->arrHeaders)) {
            if(
    $strHeaderName != "Subject") {
              
    $this->strHeaders .= $strHeaderName ": " $strHeaderValue "\n";
            }
          }
        }

        function 
    Attach($strFilename$strMIMEType ""$strDisposition "attachment") {
          if(!
    is_string($strFilename)) {
            echo 
    "Mailer Class: Fatal Error - \"Attachment Filename\" does not contain a string value.";
            exit;
          }
          else {
            if(!
    file_exists($strFilename)) {
              echo 
    "Mailer Class: Fatal Error - The file " $strFilename " cannot be accessed.";
              exit;
            }
          }
          if(!
    is_string($strMIMEType)) {
            echo 
    "Mailer Class: Fatal Error - \"Attachment MIME Type\" does not contain a string value.";
            exit;
          }
          if(!
    is_string($strDisposition)) {
            echo 
    "Mailer Class: Fatal Error - \"Attachment Disposition\" does not contain a string value.";
            exit;
          }

          if(
    $strMIMEType == "") {
            
    $strMIMEType "application/x-unknown-content-type";
          }

          
    $this->arrAttachmentDisposition[] = $strDisposition;
          
    $this->arrAttachmentFilename[] = $strFilename;
          
    $this->arrAttachmentMIMEType[] = $strMIMEType;
        }

        function 
    BCC($varBCC) {
          if(
    is_array($varBCC)) {
            if(
    count($varBCC) > 0) {
              
    $this->arrHeaders["BCC"] = implode(", ",$varBCC);
            }
            else {
              
    $this->arrHeaders["BCC"] = $varBCC;
            }
          }
          elseif(
    is_string($varBCC)) {
            
    $this->arrHeaders["BCC"] = $varBCC;
          }
          else {
            echo 
    "Mailer Class: Fatal Error - \"BCC\" does not contain an array or a string value.";
            exit;
          }
        }

        function 
    Body($strBody$strCharacterSet "") {
          if(!
    is_string($strBody)) {
            echo 
    "Mailer Class: Fatal Error - \"Body\" does not contain a string value.";
            exit;
          }
          if(!
    is_string($strCharacterSet)) {
            echo 
    "Mailer Class: Fatal Error - \"Body Character Set\" does not contain a string value.";
            exit;
          }

          
    $this->strBody $strBody;

          if(
    $strCharacterSet == "") {
            
    $this->strCharacterSet "iso-8859-1";
          }
          else {
            
    $this->strCharacterSet strtolower($strCharacterSet);
          }
        }

        function 
    BuildAttachments() {
          
    $arrAttachments = array();
          
    $intAttachmentIndex 0;

          for(
    $intCounter 0$intCounter count($this->arrAttachmentFilename); $intCounter++) {
            
    $strFilename $this->arrAttachmentFilename[$intCounter];
            
    $strBasename basename($strFilename);
            
    $strSubheader "--" $this->strBoundary "\n";
            
    $strSubheader .= "Content-Type: " $this->arrAttachmentMIMEType[$intCounter] . "; name=\"" $strBasename "\"\n";
            
    $strSubheader .= "Content-Transfer-Encoding: base64\n";
            
    $strSubheader .= "Content-Disposition: " .  $this->arrAttachmentDisposition[$intCounter] . "; filename=\"" $strBasename "\"\n";
            
    $arrAttachments[$intAttachmentIndex++] = $strSubheader;
            
    $intSize filesize($strFilename)+1;
            
    $intFilePointer fopen($strFilename,"r");
            
    $arrAttachments[$intAttachmentIndex++] = chunk_split(base64_encode(fread($intFilePointer,$intSize)));
            
    fclose($intFilePointer);
          }

          
    $this->strMail .= implode(chr(13) . chr(10),$arrAttachments);
        }

        function 
    CC($varCC) {
          if(
    is_array($varCC)) {
            if(
    count($varCC) > 0) {
              
    $this->arrHeaders["CC"] = implode(", ",$varCC);
            }
            else {
              
    $this->arrHeaders["CC"] = $varCC;
            }
          }
          elseif(
    is_string($varCC)) {
            
    $this->arrHeaders["CC"] = $varCC;
          }
          else {
            echo 
    "Mailer Class: Fatal Error - \"CC\" does not contain an array or a string value.";
            exit;
          }
        }

        function 
    From($strFrom) {
          if(!
    is_string($strFrom)) {
            echo 
    "Mailer Class: Fatal Error - \"From\" does not contain a string value.";
            exit;
          }

          
    $this->arrHeaders["From"] = $strFrom;
        }

        function 
    GetMail() {
          
    $this->AssembleMail();
          
    $strMail "To: " $this->strTo "\n";
          
    $strMail .= $this->strHeaders "\n";
          
    $strMail .= $this->strMail;
          return 
    $strMail;
        }

        function 
    Mailer() {
          
    $this->strBoundary md5(uniqid(rand(),true));
          
    $this->strIP $_SERVER["REMOTE_ADDR"];
        }

        function 
    Organization($strOrganization) {
          if(!
    is_string($strOrganization)) {
            echo 
    "Mailer Class: Fatal Error - \"Organization\" does not contain a string value.";
            exit;
          }

          
    $this->arrHeaders["Organization"] = $strOrganization;
        }

        function 
    Priority($intPriority) {
          if(!
    intval($intPriority)) {
            echo 
    "Mailer Class: Fatal Error - \"X-Priority\" does not contain a numeric value.";
            exit;
          }
          else {
            if(
    $intPriority || $intPriority 5) {
              echo 
    "Mailer Class: Fatal Error - \"X-Priority\" contains an illegal value.";
              exit;
            }

            
    $this->arrHeaders["X-Priority"] = $this->arrPriority[$intPriority 1];
          }
        }

        function 
    RequestReceipt($blnValue) {
          if(!
    is_bool($blnValue)) {
            echo 
    "Mailer Class: Fatal Error - \"Request Receipt\" does not contain a boolean value.";
            exit;
          }

          
    $this->blnReceipt $blnValue;
        }

        function 
    ReplyTo($strReplyTo) {
          if(!
    is_string($strReplyTo)) {
            echo 
    "Mailer Class: Fatal Error - \"Reply-To\" does not contain a string value.";
            exit;
          }

          
    $this->arrHeaders["Reply-To"] = $strReplyTo;
        }

        function 
    Send() {
          
    $this->AssembleMail();
          
    mail($this->strTo$this->arrHeaders["Subject"], $this->strMail$this->strHeaders);
        }

        function 
    Subject($strSubject) {
          if(!
    is_string($strSubject)) {
            echo 
    "Mailer Class: Fatal Error - \"Subject\" does not contain a string value.";
            exit;
          }

          
    $this->arrHeaders["Subject"] = str_replace("\r"" "str_replace("\n"" "$strSubject));
        }

        function 
    To($varTo) {
          if(
    is_array($varTo)) {
            if(
    count($varTo) > 0) {
              
    $this->strTo implode(", "$varTo);
            }
            else {
              
    $this->strTo $varTo;
            }
          }
          elseif(
    is_string($varTo)) {
            
    $this->strTo $varTo;
          }
          else {
            echo 
    "Mailer Class: Fatal Error - \"To\" does not contain an array or a string value.";
            exit;
          }
        }

      }
    ?> 
    این هم برای تستش:

    PHP:
    <?php
    // TO DO NEW CODE HERE 
    include "mailer.php"// ** include mailer.php

    $subject="Test Attach";
    $message="File attached.";
    $filename="c:\test.zip";
      
    $resMailer = new Mailer;
    $resMailer->From("[email protected]");
    $resMailer->To("[email protected]");
    $resMailer->Subject($subject);
    $resMailer->Body($message);
    $resMailer->Attach(str_replace("\","/",$filename), "", "attachment");
    $resMailer->Send(); // send mail (like mail())

    // TO DO NEW CODE END HERE
    ?>
    هر چندتا اتچ دلتون بخواد میتونید بزنید...
    تا بعد
     
  7. footbal
  8. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,344
    تشکر شده:
    1,314
    محل سکونت:
    یه خورده اونورتر
    برای اینه که دسترسی خوندن و نوشتن برای اون فولدر وب محدود شده.
     
  9. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    ظاهراً درست میگید چون با یه آدرس طولانی دیگه ارور نداد.
     
  10. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    درباره استفاده از کد cc و bcc کسی چیزی می‌دونه ؟
    یعنی فقط باید بنویسم cc: <[email protected]> یا اینکه کار خاصی باید انجام بدم ؟
     
  11. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    هنوز مشکل داره !
    نمیشه که از تو MyPictures نشه اتچ كرد
    حتي براي بعضي درايوهاي ديگه هم اين ارور رو ميده !
    كسي نميدونه مشكل از چيه ؟
     
  12. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,344
    تشکر شده:
    1,314
    محل سکونت:
    یه خورده اونورتر
    اين Permission denied يعني يكجورايي دسترسي ميسر نيست. شايد NTFS هستش و شما پسورد گذاشتيد روي اكنتتون.
     
  13. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    پس چرا یاهو مشکلی نداره با اتچ کردن از تو همین آدرس
     
  14. avajang.com .leftjee.ir.right
  15. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,344
    تشکر شده:
    1,314
    محل سکونت:
    یه خورده اونورتر
    شما وقتي از PHP استفاده ميكنيد از ساختار وب سرور لوكال يا ريموت استفاده ميكنيد كه سطح دسترسي هاي خواص خودش رو داره.
     
  16. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
  17. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,344
    تشکر شده:
    1,314
    محل سکونت:
    یه خورده اونورتر
    نه فكر نميكنم مشكلي ايجاد بشه.
    كلا وقتي با خود ويندوز با فايل ها كار ميكنيد خودش همه چيز رو كنترل ميكنه و چون خودتون خواستيد آپ لود كنيد پسورد رو از روش ور ميداره (دي كريپت) ميكندش و اجازه آپ لود رو ميده.
     
  18. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,344
    تشکر شده:
    1,314
    محل سکونت:
    یه خورده اونورتر
    درمورد آپ لود شدشم باید read able ش کنید.
     
  19. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
  20. balabala

    balabala کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏22 می 2005
    نوشته ها:
    7,344
    تشکر شده:
    1,314
    محل سکونت:
    یه خورده اونورتر
    كد رو بگذار ببينم...[​IMG]
     
  21. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
    PHP:
    $file str_replace("\\\\","\\",$_POST["fl$i"]);
            
    $tnamebasename($file);
            
    $multipart .= "\n--$bound1\nContent-Type: ".filetype($file).";\n\tname=\"$tname\"";
            
    $multipart .= "\nContent-Transfer-Encoding: $encoding\nContent-Disposition: attachment;\n\tfilename=\"$tname\"\n\n";
            
    $multipart .= chunk_split(base64_encode(fread(fopen($file,"r"),filesize($file))))."\n\n";
    این کد قسمت خواندن فایل هست که ارور می ده.
     
  22. Moein

    Moein Registered User

    تاریخ عضویت:
    ‏2 مارس 2004
    نوشته ها:
    1,149
    تشکر شده:
    63
    محل سکونت:
    تهران - شهرک غرب
zarpopخرید بک لینک