النتائج 1 إلى 9 من 9

الموضوع: ماهى دوال ارسال الايميل smtp؟

  1. #1
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109

    ماهى دوال ارسال الايميل smtp؟



    بسم الله الرحمن الرحيم
    ماهى دوال ارسال الايميل smtp؟

    اريد معرفة هذة الدوال وكيفية التعامل معاها من ارسال رسالة الى ملفات وصور والخ





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com


  2. #2
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    الدالة mail هي الدالة المسؤولة عن هذا الأمر، ويمكن أيضًا ان ترسل الايميل عن طريق ال sockets
    http://php.net/manual/en/function.mail.php

    هذا الأمر يقودنا إلى بروتوكولات الايميل

    سنتكلم عن نوعين:
    SMTP - يستخدم لارسال الايميلات(لا يوجد لها دوال خاصة سوى المذكورة اعلاه)

    IMAP- للوصول إلى الايميلات المخزنة على السيرفر + ارسالها ، ترسل اقل كمية من المعلومات
    وتنفع للاتصالات البطيئة.
    POP3 - مثل التي في الاعلى لكنها اقل فاعلية

    دوال ال php لهذه البروتوكولات هي
    http://www.php.net/manual/en/ref.imap.php

    لكنها لا تعمل بكفاءة عالية مع ال POP3

    SMTP vs mail retrieval

    SMTP is a delivery protocol only. It cannot pull messages from a remote server on demand. Other protocols, such as the Post Office Protocol (POP) and the Internet Message Access Protocol (IMAP) are specifically designed for retrieving messages and managing mail boxes. However, SMTP has a feature to initiate mail queue processing on a remote server so that the requesting system may receive any messages destined for it (cf. Remote Message Queue Starting). POP and IMAP are preferred protocols when a user's personal computer is only intermittently powered up, or Internet connectivity is only transient and hosts cannot receive message during off-line periods.
    ارسال الايميلات عن طريق بروتوكول ال SMTP:
    اذا جربت ان ترسل ايميل عن طريق اللينكس مباشرة وبدون اي برامج ماذا ستفعل؟
    تتصل بسيرفر ال SMTP وتكتب ايميلاتك بصورة متعاقبة على الشكل التالي:

    HELO mydomain.com
    MAIL FROM:<romeo@bogus.net>
    RCPT TO:<juliet@fakenet.com>
    DATA I`m sorry to say that I want to leave you

    QUIT

    هذا ما يتم كتابته في الشل
    HELLO - للبداية
    QUIT- للنهاية

    ماذا تفعل الدالة mail?
    تفتح اتصال كالظاهر اعلاه، تكتب البارمترات بالشكل المحدد وتغلق الاتصال.

    كيف ترسل المرفقات؟
    مثل ما ترسل المرفقات في النماذج، تحدد الهيدر على شكل multipart وتطبع المرفقات مع الكلام بصورة مختلطة، والسيرفر يحلل الطلب ويقرأه بطريقته.
    مثال:
    http://www.webcheatsheet.com/PHP/sen...php#attachment

    ما المشكلة مع الدالة mail?
    لا تنفع عندما تريد ارسال الكثير من الرسائل في حلقة تكرار، مثلا 5000 رسالة.
    والسبب مشروح في مانيوال ال php
    It is worth noting that the mail() function is not suitable for larger volumes of email in a loop. This function opens and closes an SMTP socket for each email, which is not very efficient.
    For the sending of large amounts of email, see the » PEAR::Mail, and » PEAR::Mail_Queue packages.
    بما ان الدالة mail تستخدم سيرفر SMTP، اين بيانات الاتصال؟
    في ملف php.ini

    كيف يمكن ارسال بريد على شكل socket
    http://www.9lessons.info/2009/10/sen...p-and-php.html

    طيب جميع هذه الامور معقدة جدًا، كيف يمكن ان أحصل على دوال بسيطة؟

    هناك الكثير من المكتبات، مثل مكتبات الpear
    phpmailer
    وغيرها






  3. #3
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    إضافة اخرى:

    الدالة mail تعيد قيمة بوليانية TRUE\FALSE
    هذه القيمة لا تؤكد ان الايميل تم ارساله بالفعل أم لا

    لكنها تنفع في اغلب الاحوال






  4. #4


    انصحك بـ phpmailer

    صحيح اني واجهت مشاكل واستغنيت عنه لكن اجده ممتاز





    __________________
    للعلم تم ايقاف تطوير لوحة الاعلانات المتكاملة لكن اللوحة متوفرة للتحميل ولكن الدعم قائم ..
    لمراسلتي : hamood0.2009@gmail.com

    تابعني على التويتر

  5. #5
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    الدالة mail هي الدالة المسؤولة عن هذا الأمر، ويمكن أيضًا ان ترسل الايميل عن طريق ال sockets
    http://php.net/manual/en/function.mail.php

    هذا الأمر يقودنا إلى بروتوكولات الايميل

    سنتكلم عن نوعين:
    SMTP - يستخدم لارسال الايميلات(لا يوجد لها دوال خاصة سوى المذكورة اعلاه)

    IMAP- للوصول إلى الايميلات المخزنة على السيرفر + ارسالها ، ترسل اقل كمية من المعلومات
    وتنفع للاتصالات البطيئة.
    POP3 - مثل التي في الاعلى لكنها اقل فاعلية

    دوال ال php لهذه البروتوكولات هي
    http://www.php.net/manual/en/ref.imap.php

    لكنها لا تعمل بكفاءة عالية مع ال POP3



    ارسال الايميلات عن طريق بروتوكول ال SMTP:
    اذا جربت ان ترسل ايميل عن طريق اللينكس مباشرة وبدون اي برامج ماذا ستفعل؟
    تتصل بسيرفر ال SMTP وتكتب ايميلاتك بصورة متعاقبة على الشكل التالي:

    HELO mydomain.com
    MAIL FROM:<romeo@bogus.net>
    RCPT TO:<juliet@fakenet.com>
    DATA I`m sorry to say that I want to leave you

    QUIT

    هذا ما يتم كتابته في الشل
    HELLO - للبداية
    QUIT- للنهاية

    ماذا تفعل الدالة mail?
    تفتح اتصال كالظاهر اعلاه، تكتب البارمترات بالشكل المحدد وتغلق الاتصال.

    كيف ترسل المرفقات؟
    مثل ما ترسل المرفقات في النماذج، تحدد الهيدر على شكل multipart وتطبع المرفقات مع الكلام بصورة مختلطة، والسيرفر يحلل الطلب ويقرأه بطريقته.
    مثال:
    http://www.webcheatsheet.com/PHP/sen...php#attachment

    ما المشكلة مع الدالة mail?
    لا تنفع عندما تريد ارسال الكثير من الرسائل في حلقة تكرار، مثلا 5000 رسالة.
    والسبب مشروح في مانيوال ال php


    بما ان الدالة mail تستخدم سيرفر SMTP، اين بيانات الاتصال؟
    في ملف php.ini

    كيف يمكن ارسال بريد على شكل socket
    http://www.9lessons.info/2009/10/sen...p-and-php.html

    طيب جميع هذه الامور معقدة جدًا، كيف يمكن ان أحصل على دوال بسيطة؟

    هناك الكثير من المكتبات، مثل مكتبات الpear
    phpmailer
    وغيرها
    إضافة اخرى:

    الدالة mail تعيد قيمة بوليانية TRUE\FALSE
    هذه القيمة لا تؤكد ان الايميل تم ارساله بالفعل أم لا

    لكنها تنفع في اغلب الاحوال
    جزاك الله الف خيرا اخي الكريم على مجهودك الكبير جدا ده على الموضوع

    انا بحاول افهم مكتبة phpmailer عشان كده عاول اعرف الدوالة الى هى بتستخدمها فى ارسال الى اكثر من ايميل والخ
    انصحك بـ phpmailer

    صحيح اني واجهت مشاكل واستغنيت عنه لكن اجده ممتاز
    حزاك الله الف خير اخى الكريم

    انا بحاول افهمها





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  6. #6
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    باختصار انظر إلى هذا الملف(مستخدم ايضًا في الوردبرس):
    http://www.tig12.net/downloads/apidocs/wp/wp-includes/PHPMailer.class.html

    فيه كل الدوال والمتغيرات

    نبذة عن الكلاس - حتى تفهمه بسهولة:
    *يدعم الارسال بطرق متعددة : smtp محلي وخارجي (محلي = الدالة mail ، خارجي - سيرفر خارجي مثل الجيميل)، sendmail، Qmail
    *يدعم صيغ متعددة: عادي وهتمل
    *يدعم ارسال اكثر من مرفق أو لأكثر من مستلم عن طريق الدوال addAttachment,addAddress

    الدالة IsSMTP() تحدد الطريقة التي سيرسل بها الايميل ولا تسأل عن نوع الاتصال

    هذا مثال كتبته في احدى برمجياتي ارجو ان يفيدك-مع انه مخلوط بدوال من بنائي مثل get_option
    ويأخذ محتوى الرسالة من القوالب
    كود PHP:
    function do_mail($to,$subject,$body,$rec_name="",$token=false)
    {
    global 
    $re;
    require_once(
    CMS_PATH.'external/phpmailer/class.phpmailer.php');
    $mail     = new PHPMailer(); 
    $mail->AddAddress($to$rec_name);
    $mail->Subject    $subject;

    switch (
    $body)
    {
    default:

    break;
    case 
    "activate":
    $body file_get_contents(get_option("site_path").get_option("template_path")."mail/activate.html");
    $body str_replace("{url}",get_option('url'),$body);
    $body str_replace("{title}",get_option('site_title'),$body);
    $body str_replace("{name}",$name,$body);
    $activate $re->get_permalink("/users/activate/");
    $body str_replace("{activate}",$activate.$token,$body);

    break;
    case 
    "pwd_reset":
    $body file_get_contents(CMS_PATH.get_option("template_path")."mail/pwd_reset.html");
    $body str_replace("{url}",get_option('url'),$body);
    $body str_replace("{title}",get_option('site_title'),$body);
    $body str_replace("{name}",$name,$body);
    $reset $re->get_permalink("/users/reset/");
    $body str_replace("{reset}",$reset.$token,$body);
    break;
    }
    $mail->MsgHTML($body);
    if (
    get_option("mail_method")=="smtp")
    {
    $mail->IsSMTP();
    $mail->SMTPAuth   true;                  
    $mail->SMTPSecure "ssl";              
    $mail->Host       get_option("smtp_host");      
    $mail->Port       get_option("smtp_port");                  

    $mail->Username   get_option("smtp_user");   
    $mail->Password   get_option("smtp_pass");   
    }
    if(
    $mail->Send())
    return 
    true;
    else return 
    false;

    مصدر آخر:
    http://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.html





    التعديل الأخير تم بواسطة ahmad sadiq ; 21-03-2011 الساعة 01:34 AM

  7. #7
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    باختصار انظر إلى هذا الملف(مستخدم ايضًا في الوردبرس):
    http://www.tig12.net/downloads/apidocs/wp/wp-includes/PHPMailer.class.html

    فيه كل الدوال والمتغيرات

    نبذة عن الكلاس - حتى تفهمه بسهولة:
    *يدعم الارسال بطرق متعددة : smtp محلي وخارجي (محلي = الدالة mail ، خارجي - سيرفر خارجي مثل الجيميل)، sendmail، Qmail
    *يدعم صيغ متعددة: عادي وهتمل
    *يدعم ارسال اكثر من مرفق أو لأكثر من مستلم عن طريق الدوال addAttachment,addAddress

    الدالة IsSMTP() تحدد الطريقة التي سيرسل بها الايميل ولا تسأل عن نوع الاتصال

    هذا مثال كتبته في احدى برمجياتي ارجو ان يفيدك-مع انه مخلوط بدوال من بنائي مثل get_option
    ويأخذ محتوى الرسالة من القوالب
    كود PHP:
    function do_mail($to,$subject,$body,$rec_name="",$token=false)
    {
    global 
    $re;
    require_once(
    CMS_PATH.'external/phpmailer/class.phpmailer.php');
    $mail     = new PHPMailer(); 
    $mail->AddAddress($to$rec_name);
    $mail->Subject    $subject;

    switch (
    $body)
    {
    default:

    break;
    case 
    "activate":
    $body file_get_contents(get_option("site_path").get_option("template_path")."mail/activate.html");
    $body str_replace("{url}",get_option('url'),$body);
    $body str_replace("{title}",get_option('site_title'),$body);
    $body str_replace("{name}",$name,$body);
    $activate $re->get_permalink("/users/activate/");
    $body str_replace("{activate}",$activate.$token,$body);

    break;
    case 
    "pwd_reset":
    $body file_get_contents(CMS_PATH.get_option("template_path")."mail/pwd_reset.html");
    $body str_replace("{url}",get_option('url'),$body);
    $body str_replace("{title}",get_option('site_title'),$body);
    $body str_replace("{name}",$name,$body);
    $reset $re->get_permalink("/users/reset/");
    $body str_replace("{reset}",$reset.$token,$body);
    break;
    }
    $mail->MsgHTML($body);
    if (
    get_option("mail_method")=="smtp")
    {
    $mail->IsSMTP();
    $mail->SMTPAuth   true;                  
    $mail->SMTPSecure "ssl";              
    $mail->Host       get_option("smtp_host");      
    $mail->Port       get_option("smtp_port");                  

    $mail->Username   get_option("smtp_user");   
    $mail->Password   get_option("smtp_pass");   
    }
    if(
    $mail->Send())
    return 
    true;
    else return 
    false;

    مصدر آخر:
    http://www.askapache.com/php/phpfreaks-eric-rosebrocks-phpmailer-tutorial.html
    جزاك الله الف اخى الكريم

    انا كنت اقصد افهم الكود نفسه





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  8. #8
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    اهه فهمت عليك
    الطريقة لل SMTP موجوده في كلاسها smtp.class.php

    وهي عن طريق ال socket

    الاتصال:
    كود PHP:
    $this->smtp_conn = @fsockopen($host,    // the host of the server
                                     
    $port,    // the port to use
                                     
    $errno,   // error number if any
                                     
    $errstr,  // error message if any
                                     
    $tval);   // give up after ? secs 
    تسجيل الدخول، وهو يطبع المعلومات التي يحتاجها سيرفر ال SMTP حسب ما يتم تعريفه من نصوص:
    كود PHP:
    fputs($this->smtp_conn,"AUTH LOGIN" $this->CRLF);

        
    $rply $this->get_lines(); 
    كما ترى ان الاتصال باتجاهين، يعني يرسل ويستقبل

    AUTH LOGIN - مثل HELLO و QUIT في الاعلى : مجرد جمل يجب ادخالها للسيرفر
    كلمة السر ترسل مشفرة base64
    fputs-مثل fwrite لكن للنصوص

    بالنسبة للارسال لأكثر من بريد هي ترسلهم جميعًا في stream واحد وتغلق الاتصال مرة واحدة فقط

    بالتوفيق

    =====

    الله يعينك اخوي
    حاسس اني لزقتلك في الموضوع





    التعديل الأخير تم بواسطة ahmad sadiq ; 21-03-2011 الساعة 02:05 AM

  9. #9
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    اهه فهمت عليك
    الطريقة لل SMTP موجوده في كلاسها smtp.class.php

    وهي عن طريق ال socket

    الاتصال:
    كود PHP:
    $this->smtp_conn = @fsockopen($host,    // the host of the server
                                     
    $port,    // the port to use
                                     
    $errno,   // error number if any
                                     
    $errstr,  // error message if any
                                     
    $tval);   // give up after ? secs 
    تسجيل الدخول، وهو يطبع المعلومات التي يحتاجها سيرفر ال SMTP حسب ما يتم تعريفه من نصوص:
    كود PHP:
    fputs($this->smtp_conn,"AUTH LOGIN" $this->CRLF);

        
    $rply $this->get_lines(); 
    كما ترى ان الاتصال باتجاهين، يعني يرسل ويستقبل

    AUTH LOGIN - مثل HELLO و QUIT في الاعلى : مجرد جمل يجب ادخالها للسيرفر
    كلمة السر ترسل مشفرة base64
    fputs-مثل fwrite لكن للنصوص

    بالنسبة للارسال لأكثر من بريد هي ترسلهم جميعًا في stream واحد وتغلق الاتصال مرة واحدة فقط

    بالتوفيق

    =====

    الله يعينك اخوي
    حاسس اني لزقتلك في الموضوع
    جزاك الله الف خيرا اخى الكريم
    الى قلى اية فهمت عليك دية شتيمة
    ههههههههههههه
    لا ملزقتش فى الموضوع ولا حاجة بال بالعكس الموضوع كده بقى ليه فيدة اكثر

    جزاك الله الف خيرا اخى الكريم انت وكل من حاول مساعدة فى الموضوع





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض