لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 10/11/22 في كل الموقع
-
يوجد في بايثون أكثر من طريقة يمكن من خلال حذف ملف أو مجلد: import os # حذف ملف os.remove("/path/to/<file_name>.txt") # حذف مجلد os.rmdir("/path/to/<dir_name>") # في بايثون الإصدار 3.4+ يمكن إستعمال مكتبة pathlib import pathlib # حذف ملف pathlib.Path.unlink("/path/to/<file_name>.txt") # حذف مجلد فارغ pathlib.Path.rmdir("/path/to/<dir_name>")2 نقاط
-
إذا أردتِ التحقق من وجود مفتاح ما في قاموس، فيمكن إستخدام إحدى الطريقتين الآتيين: الطريقة الأولى إستخدام التابع get كالتالي: dict = {'Name': 'Ahmed', 'Age': 7} print ("Value : %s" % dict.get('Age')) #Output: "Value : 7" كما يمكن تعين قيمة إفتراضية في حالة عدم وجود المفتاح age في القاموس كالتالي: dict = {'Name': 'Ahmed'} print ("Value : %s" % dict.get('Age', 18)) #Output: "Value : 18" أما إذا أردتِ التحقق من وجود قيمة value معينة في قاموس فيمكن إستخدام التابع values مع المعامل in كالتالي: dict = {'Name': 'Ahmed', 'age': 7} print ('ahmed' in dict.values()) #Output: True2 نقاط
-
شكرا علي الرد ولكن يوجد كل الاعمده في الكنترول سوف ارسل الاكواد شكرا علي ردك وهذا كود الكنترولار عندما احزف حقل يقول بعمل المشكلة علي الحقل الذي يلية public function store(Request $request) { $data=new Orders(); $data=new Job_order_data(); $data=new Producer(); $data=new Raw(); $data=new Size(); $data=new Hole(); $data=new Classification(); $data=new Type(); $data->joborderdata_id = $request->joborderdata_id; $data->Producer_id = $request->Producer_id; $data->size_id = $request->size_id; $data->hole_id = $request->hole_id; $data->raw_id = $request->raw_id; $data->classification_id = $request->classification_id; $data->type_orders_id = $request->type_orders_id; $data->Description_of_the_job = $request->Description_of_the_job ; $data->total_parts = $request->total_parts; $data->start_date = $request->start_date; $data->End_date = $request->End_date; $data->Planned_time = $request->Planned_time; $data->Status='مفتوح'; $data->Value_Status = 2; $data->notes=$request->notes; $data->user = (Auth::user()->name); $data->save(); $notification = array( 'message' => 'تم اضافة بنجاح', 'alert-type' => 'success' ); return redirect()->route('order.index')->with($notification); }1 نقطة
-
1 نقطة
-
انا عندي مشكلة مع الجافا سكربت المشكلة انا فهمت بتتكتب ازاي بس مش عارف ازاي استخدمها فا هل اروح اخد كورس اساسيات زي cs50 مثلا1 نقطة
-
السلام عليكم، عند التعديل على ملفات التنسيقات المرفوعه على استضافة هوستنجر لا تظهر التنسيقات المضافة على الموقع عند معاينة النتيجة أبدا وقد قمت بمسح ال cache وال view لعل المشكلة تحل وتظهر التنسيقات التي تم اضافتها ولكن لم تظهر أبدا فما الحل؟1 نقطة
-
vite يقوم بذلك بشكل تلقائي، هل تقوم بتنفيذ الأمر npm run build لإعادة تحزيم ملفات الاصول بعد التعديل عليها؟ بطبيعة الحال فإنه لن يتم التقاط أي تعديل قبل هذا الأمر. من غير المنطقي ايضا التعديل على ملف في بيئة انتاجية، قم بذلك في بيئة التطوير ثم اعد رفع التحديثات.1 نقطة
-
يحتمل أن التخزين المؤقت للملفات يتم على جهازك أيضا. جرب تعديل اسماء الملفات او طريقة استدعاءها. فالملفات على النحو: <link rel="stylesheet" href="{{ asset('css/app.css') }}" /> اجعلها كـ: <link rel="stylesheet" href="{{ asset('css/app.css') . '?d=' . time() }}" /> سيقوم هذا بجبر عدم التخزين المؤقت للملفات على المتصفح ايضا. (الأمر مؤقت فقط لاستعراض نتائجك، لا يجب عليك اعتماده بشكل دائم)1 نقطة
-
تستخدم JavaScript في الكثير من المجالات في الوقت الحاضر مثل بناء تطبيقات سطح المكتب و تطبيقات الهواتف الذكية وبشكل رئيس تطوير مواقع الويب ..إلخ. ويبدو من سؤالك انك لم تقم ببناء اي تطبيق باستخدام js، فإذا كنت انتهيت من تعلم اساسيات اللغة فيجب عليك ان تبدأ ببناء التطبيقات واستخدامها وستجد الكثير من الاستخدامات حسب المجال التي تستخدمها فيه. وبعد ان تقوم باستخدامها يمكنك حينها التفكير بتعلم مهارات جديدة أو تعلم كورس ..إلخ. يمكنك الاطلاع على المقال التالي :1 نقطة
-
قمت منذ مدة تركيب ثيم الاعلانات المبوبة laraclassified لاكن عندما اكتب رابط موقعي مع اضافة www.site.com/admin للدخول لوحة التحكم نسيت معلومات الدخول مع اني استطيع الدخول للاستضافة وقواعد البيانات و phpmyadmin لاحظت ان كلمات السر مشفرة تبدأ برمز $ عندما اقوم بطلب استرجاع كلمة السر عبر الايمايل لايصل شيئ ربما به اخطاء الموقع هل من مساعدة كيف اعرف معلومات الدخول ؟1 نقطة
-
1 نقطة
-
كيف استطيع حل المشكلات البرمجية وحدي بدون مساعدة وبدون مشاهدة الحل؟ مع العلم افهم الاساسيات البرمجية جيدا, واستطيع التطبيق مع المدرب في الفيديو ولكن عندما احاول ان ابرمج بنفسي لا استطيع.1 نقطة
-
لنعد أولاً إلى تعريف البرمجة، فالبرمجة هي أكثر من مجرد إتقان لغة برمجية أو إصلاح أخطاء شيفرة برمجية معينة بل هي إثبات عملي للفكر التحليلي والرياضي والمنطقي والقدرة على تفكيك المشاكل الكبيرة والمعقدة إلى أجزاء صغيرة ومفهومة وقابلة للحلّ. أي أنّنا سيكون لدينا مشكلة ضخمة كمشروع فيه الكثير من الوظائف مثلاً، ثمَّ سنقوم بتحليله شيئاً فشيئاً إلى أن يصبح لدينا خارطة ذهنية للوظائف التي ستكون في المشروع وكيفية بنائها، وهذا لا شك يحتاج إلى الخبرة أي الوقت والممارسة والاستغراق بالتفكير. ولا بدّ من الإشارة هنا إلى أهمية مواقع حل المشكلات البرمجية مثل موقع Codeforces، فحل المشكلات على مواقع مثل هذا ستمكنك من تطوير تفكيرك التحليلي والتفكير المنطقي وحل المشكلات المنطقية بشكل أسرع. والآن لننطلق إلى واقع ملموس ومعايير في بناء المشروع يمكن اتباعها وفهمها لتكون حجر الأساس. إذاً كيف نقوم ببناء خطة حلّ شاملة لمشروعنا ؟ وما سأنقله هنا ليس تعليمات ثابتة وإنما مبادئ ننطلق منها جميعًا، كلٌ منا يطبقها بأسلوبه الخاص. 1. فهم المشكلة: إن فهمنا للمشكلة المطروحة هي الخطوة الأكثر صعوبة في طريقنا لحلّها، بل إن أكثر المشاكل تأتي صعوبتها من عدم تمكننا من فهم عميق لها. ولكن متى تعلم بأنك استطعت فهم المشكلة؟ إذا كنت قادرًا على شرحها بكلمات واضحة وسهلة بحيث يستطيع أي شخص فهمها عندها تكون بالفعل قد فهمت المشكلة. 2. تحليل المشكلة: إن تقسيم المشكلة يلعب دورًا مهمًا في طريقك لإيجاد الحلّ، لذا حاول أن تقسّمها إلى أجزاء صغيرة ثمّ حُلّ كلَّ جزء منها على حدة ويُنصح في البداية بحلّ أسهل جزء منها ومن ثمّ الأصعب فالأصعب وهكذا إلى أن يتمّ حلّ جميع أجزائها، وبعدها إجمع هذه الأجزاء مع بعضها للحصول على الحلّ النهائي للمشكلة الأصلية (الكبيرة). 3. إعداد خطة للحل: بعد أن فهمت وحللت المشكلة، يأتي دور وضع الخطة المناسبة للحلّ بحيث تغطي كافة الجوانب والتفاصيل للمشكلة، ولا تشرع في الحلّ من دون خطة (على أمل أن تجد الحلّ بطريقة ما) لأن المفتاح الرئيسي للوصول للحلّ هي الخطة الواضحة والمنظمة والتي تضمن وصولنا للحلّ النهائي. 4. مواجهة حالة السكتة البرمجية: ماذا لو فرضنا أنك لم تستطع حلّ أي جزء من المشكلة، ولا حتى الأجزاء السهلة منها (وهذا قد يحدث في بعض الأحيان)، إن كثير من المبرمجين يقعون في هذه الحالة فلا يستطيعون أن يُحرزوا أي تقدم يذكر في تطوير الشيفرة البرمجية وهذا أشبه ما يمكن بالسكتة الدماغية (حيث لا يستطيع المريض القيام بأي حركة)، في الحقيقة إن هذه الحالة طبيعية جدًا ومعظمنا قد تعرض لها في بداية مشواره والاختلاف الوحيد هو أن المبرمج المحترف لديه فضول أكثر حول المشكلة ومعرفة سبب حدوثها بدلًا من أن يكون منزعجًا أو غاضبًا منها. وفي هذه الحالة هنالك حلّين يمكنك تجربتهما للخروج من هذا المأزق: 1. تنقيح الأخطاء: والمقصود الأخطاء البرمجية 2. مراجعة وتقييم الحلّ: أي فحص الحل الذي عملنا عليه، هل هو الحل الأمثل حقّاً وهل كان صحيحا منذ البداية؟ 5. البحث عن حلول عبر الإنترنت: فإنّ الاستفادة من الخبرات السابقة المتوفرة على الأنترنت فيه تسهيل كبير لحل المشاكل البرمجية، فقد أصبحت أغلب المشكلات مكررة بشكل كبير على الانترنت. ختاماً أتركك مع المرجع التالي: حل المشكلات وأهميتها في احتراف البرمجة1 نقطة
-
تُخبرك رسالة الخطأ أن العمود joborederdata_id غير موجود في الجدول المطلوب الذي تحاول إضافة صف جديد فيه. تأكد من تواجد ذلك العمود، و قم بإضافته إذا لم تجده.1 نقطة
-
إنها أقصر بكثير! يمكننا حذف الأقواس المتعرجة وبيان الإرجاع بسبب الإرجاع الضمني ( المزيد حول هذا في المقال أدناه). من المهم أن نفهم كيف تتصرف وظيفة السهم بشكل مختلف مقارنة بوظائف ES5 العادية. هناك شيء واحد ستلاحظه بسرعة وهو تنوع التركيبات المتاحة في وظائف الأسهم. دعنا ننتقل إلى بعض الأشياء الشائعة: 1. لا توجد معلمات إذا لم تكن هناك معاملات ، يمكنك وضع أقواس فارغة قبل = & gt ؛. () => 42 في الواقع ، لا تحتاج حتى إلى الأقواس! _ => 42 2. معلمة واحدة باستخدام هذه الوظائف ، تكون الأقواس اختيارية: x => 42 || (x) => 42 3. معلمات متعددة الأقواس مطلوبة لهذه الوظائف: (x, y) => 42 4. البيانات (مقابل التعبيرات) في أبسط أشكاله ، ينتج تعبير الوظيفة قيمة ، بينما تؤدي تعليمة الوظيفة إجراءً. مع وظيفة السهم ، من المهم أن تتذكر أن العبارات تحتاج إلى أقواس مجعدة. بمجرد وجود الأقواس المتعرجة ، ستحتاج دائمًا إلى كتابة العودة أيضًا. فيما يلي مثال على وظيفة السهم المستخدمة مع عبارة if: var feedTheCat = (x) => { if (x === 1) { return true; } else { return false; } } 6. كائن حرفية Object literals إذا كنت تعيد كائنًا حرفيًا ، فيجب لفه بين قوسين. هذا يجبر المترجم الفوري على تقييم ما بداخل الأقواس ، ويتم إرجاع الكائن الحرفي. x =>({ y: x }) للمزيد حول الدوال السهمية1 نقطة
-
معاملات الدالة mail() في PHP: المعامل تفاصيل string $to عنوان البريد الإلكتروني للمستقبل string $subject الموضوع string $message محتوى البريد الإلكتروني string $additional_headers معامل اختياري: ترويسات لإضافتها إلى البريد الإلكتروني string $additional_parameters معامل اختياري: وسائط لتمريرها إلى تطبيق البريد الإلكتروني المرسل المُعد في سطر الأوامر table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } أساسيات إرسال بريد إلكتروني مع مثال يتألف البريد الإلكتروني النموذجي من ثلاثة مكونات أساسية: مُستقبِل (يُمثَّل كعنوان بريد إلكتروني) موضوع جسم الرسالة يمكن أن يكون إرسال بريد إلكتروني بسيطًا مثل استدعاء الدالة المضمنة mail()، تأخذ هذه الدالة حتى 5 معاملات، أول ثلاث معاملات هي المطلوبة فقط لإرسال بريد إلكتروني (ومن الشائع استخدام المعامل الرابع كما سنوضح في المثال أدناه)، المعاملات الثلاثة الأولى هي: عنوان البريد الإلكتروني للمستقبل (سلسلة نصية). موضوع البريد الإلكتروني (سلسلة نصية). جسم البريد الإلكتروني (سلسلة نصية) (أي محتوى البريد الإلكتروني). الشيفرة التالية توضح مثال بسيط: mail('recipient@example.com', 'Email Subject', 'This is the email message body'); يعدّ المثال السابق جيدًا في بعض الحالات مثل توفير القيمة في شيفرة (بدلًا من جلبها من مصدر خارجي) عند إرسال بريد إلكتروني للتنبيه في نظام داخلي. لكن من الشائع وضع المعاملات الممررة كمعاملات للدالة mail() في متغيرات لجعل الشيفرة أنظف وأسهل في الإدارة (مثلًا لإنشاء بريد إلكتروني ديناميكي بعد إرسال نموذج). بالإضافة إلى ذلك تقبل الدالة mail() معاملًا رابعًا يسمح لك بإضافة ترويسات في البريد الإلكتروني المرسل، يمكن أن تسمح لك هذه الترويسات بضبط: اسم المرسل وعنوان البريد الإلكتروني الذي سيظهر لدى المستخدم. عنوان البريد الإلكتروني للحقل Reply-To والذي سيُرسل إليه رد المستخدم. ترويسات إضافية غير معيارية مثل X-Mailer والتي تخبر المستقبل أن هذا البريد الإلكتروني أُرسل عبر PHP. // يمكن أن تكون $to = $_POST['recipient']; $to = 'recipient@example.com'; // يمكن أن تكون $subject = $_POST['subject']; $subject = 'Email Subject'; // يمكن أن تكون $message = $_POST['message']; $message = 'This is the email message body'; $headers = implode("\r\n", [ 'From: John Conde <webmaster@example.com>', 'Reply-To: webmaster@example.com', 'X-Mailer: PHP/' . PHP_VERSION ]); يمكن أن يُستخدم المعامل الخامس الاختياري لتمرير رايات إضافية مثل خيارات سطر الأوامر إلى البرنامج المُعدّ ليستخدم عند إرسال بريد إلكتروني كما هو معرَّف في ضبط الإعداد sendmail_path، يمكن استخدامه مثلًا لضبط عنوان المرسل عند استخدام الأمر sendmail/postfix مع الخيار -f لإرسال بريد إلكتروني. $fifth = '-fno-reply@example.com'; على الرغم من أن استخدام الدالة mail() يمكن أن يكون موثوقًا إلى حد كبير، إلا أنّه لا يوجد ما يضمن إرسال البريد الإلكتروني عند كل استدعاء لها، لذا يجب أن تلتقط القيمة المُرجعة منها لتعرف ما إذا كان هناك خطأ محتمل عند إرسال بريدك الإلكتروني، إذ أنّ الدالة ستُرجع القيمة TRUE إذا قُبل البريد الإلكتروني بنجاح للتسليم وإلا ستُرجع القيمة FALSE. $result = mail($to, $subject, $message, $headers, $fifth); ملاحظة: إنّ إرجاع الدالة mail() للقيمة TRUE لا يعني أنّ البريد الإلكتروني أُرسل أو أنّه سيُستقبَل بنجاح، إنما فقط يدل على أنّ البريد الإلكتروني سُلِّم بنجاح إلى نظام البريد الإلكتروني الخاص بك. تحتاج إلى بعض الخطوات الإضافية لترسل بريد إلكتروني بصيغة HTML: إضافة الترويسة MIME-Version. إضافة الترويسة Content-Type. التأكد من أنّ محتوى البريد الإلكتروني بصيغة HTML. $to = 'recipient@example.com'; $subject = 'Email Subject'; $message = '<html><body>This is the email message body</body></html>'; $headers = implode("\r\n", [ 'From: John Conde <webmaster@example.com>', 'Reply-To: webmaster@example.com', 'MIME-Version: 1.0', 'Content-Type: text/html; charset=ISO-8859-1', 'X-Mailer: PHP/' . PHP_VERSION ]); إليك مثال كامل لاستخدام الدالة mail(): // أدوات تنقيح الأخطاء، شغّلها في بيئة التطوير الخاصة بك فقط. error_reporting(-1); ini_set('display_errors', 'On'); set_error_handler("var_dump"); // إعدادات بريد إلكتروني خاصة يمكن أن تقلل من احتمال جعل البريد الإلكتروني الخاص بك غير مرغوب فيه وتوفر تسجيل دخول في حالة وجود صعوبات تقنية. ini_set("mail.log", "/tmp/mail.log"); ini_set("mail.add_x_header", TRUE); // مكونات بريدنا الإلكتروني $to = 'recipient@example.com'; $subject = 'Email Subject'; $message = 'This is the email message body'; $headers = implode("\r\n", [ 'From: webmaster@example.com', 'Reply-To: webmaster@example.com', 'X-Mailer: PHP/' . PHP_VERSION ]); // إرسال البريد الإلكتروني $result = mail($to, $subject, $message, $headers); // التحقق من النتائج والتفاعل وفقًا لذلك. if ($result) { // (1) header('Location: http://example.com/path/to/thank-you.php', true, 303); exit; } else { // (2) } في الموضع (1) تكون الدالة أرجعت القيمة TRUE وسيُعاد التوجيه إلى صفحة thank-you، نستخدم النمط POST/REDIRECT/GET لمنع إعادة إرسال النموذج عندما يحدّث المستخدم الصفحة. في الموضع (2) لم يُرسل البريد الإلكتروني، تحقق من السجلات لمعرفة السبب. يمكنك الاطلاع أيضًا على: التوثيق الرسمي: mail إعدادات الدالة mail أسئلة ذات صلة من موقع stack overflow: الدالة mail لا تُكمل إرسال البريد الإلكتروني. كيف تتأكد من أنّ بريدك الإلكتروني المُرسل لا يُصنف ضمن البريد الإلكتروني غير المرغوب فيه. كيف تستخدم SMTP لإرسال بريد إلكتروني. ضبط إعدادات مرسل البريد الإلكتروني. خدمات بريد إلكتروني بديلة: PHPMailer SwiftMailer PEAR::Mail مخدمات بريد إلكتروني: Mercury Mail (Windows) مواضيع ذات صلة: Post/Redirect/Get إرسال بريد إلكتروني يحتوي على صيغة HTML باستخدام الدالة mail() <?php $to = 'recipent@example.com'; $subject = 'Sending an HTML email using mail() in PHP'; $message = '<html><body><p><b>This paragraph is bold.</b></p><p><i>This text is italic.</i></p></body></html>'; $headers = implode("\r\n", [ "From: John Conde <webmaster@example.com>", "Reply-To: webmaster@example.com", "X-Mailer: PHP/" . PHP_VERSION, "MIME-Version: 1.0", "Content-Type: text/html; charset=UTF-8" ]); mail($to, $subject, $message, $headers); لا يختلف هذا كثيرًا عن إرسال بريد إلكتروني يحتوي على نص بسيط، الاختلافات الرئيسة هي أنّ المحتوى عبارة عن ملف HTML ويوجد ترويستين إضافيتين يجب تضمينهما حتى يعرف البريد الإلكتروني للعميل أنّ البريد الإلكتروني بصيغة HTML وهما: MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 إرسال بريد إلكتروني مع مرفق باستخدام الدالة mail() إليك المثال التالي: <?php $to = 'recipient@example.com'; $subject = 'Email Subject'; $message = 'This is the email message body'; $attachment = '/path/to/your/file.pdf'; $content = file_get_contents($attachment); // (1) $content = chunk_split(base64_encode($content)); //(2) $prefix = "part_"; // (3) // (4) $boundary = uniqid($prefix, true); // الترويسات $headers = implode("\r\n", [ 'From: webmaster@example.com', 'Reply-To: webmaster@example.com', 'X-Mailer: PHP/' . PHP_VERSION, 'MIME-Version: 1.0', // معامل الحد مطلوب ويجب أن يكون ضمن علامات اقتباس 'Content-Type: multipart/mixed; boundary="' . $boundary . '"', "Content-Transfer-Encoding: 7bit", "This is a MIME encoded message." // message for restricted transports ]); // الرسالة والمرفق $message = implode("\r\n", [ "--" . $boundary, // (5) 'Content-Type: text/plain; charset="iso-8859-1"', "Content-Transfer-Encoding: 8bit", $message, "--" . $boundary, // (6) 'Content-Type: application/octet-stream; name="RenamedFile.pdf"', "Content-Transfer-Encoding: base64", "Content-Disposition: attachment", $content, "--" . $boundary . "--" // (7) ]); // إرسال البريد الإلكتروني $result = mail($to, $subject, $message, $headers); if ($result) { // (8) header('Location: http://example.com/path/to/thank-you.php', true, 303); exit; } else { // (9) } في الموضع (1) يجب تقسيم محتوى المرفق المُرسل باستخدام تشفير Base64 إلى أجزاء بطول 76 محرفًا كما هو محدد في القسم 6.8 من RFC 2045، تستخدم الدالة chunk_split() بشكلٍ افتراضي طول الجزء 76 مع CRLF زائدة (\r\n)، لا يتضمن متطلب 76 محرفًا المحارف carriage return وline feed. في الموضع (2) تحدد الحدود الكيانات متعددة الأجزاء، يجب ألا يكون الحد في أي جزء مغلف كما هو مذكور في القسم 5.1 من RFC 2046 لذا يجب أن يكون فريدًا، وكما هو مذكور في القسم 5.1.1 التالي فإنّ الحدّ يُعرَّف على أنّه خط يتألف من موصلين ("--") وقيمة معامل ومسافة خطية اختيارية وCRLF نهائية. في الموضع (3) بادئة اختيارية. في الموضع (4) إنشاء قيمة معامل حد فريدة مع البادئة باستخدام الدالة uniqid()، المعامل الثاني يجعل قيمة المعامل فريدة أكثر. في الموضع (5) محدد حد الترويسة في الموضع (6) محدد حد المحتوى في الموضع (7) محدد حد الإغلاق في الموضع (8) تكون الدالة أرجعت القيمة TRUE وسيُعاد التوجيه إلى صفحة thank-you، نستخدم النمط POST/REDIRECT/GET لمنع إعادة إرسال النموذج عندما يحدّث المستخدم الصفحة. في الموضع (9) لم يُرسل البريد الإلكتروني، تحقق من السجلات لمعرفة السبب. ترميز نقل المحتوى الترميزات المتاحة هي 7 بت، 8 بت، الثنائي، مقتبس قابل للطباعة (quoted-printable)، الأساس 64 (base64)، ietf-token وx-token، من هذه الترميزات عندما يكون Content-Type متعدد الأجزاء فإنّ ترميز نقل المحتوى يجب ألّا يكون أي قيمة أخرى غير 7 بت أو 8 بت أو ثنائي. نختار في مثالنا ترميز 7 بت الذي يمثّل محارف US-ASCII للترويسة متعددة الأجزاء لأنّ بعض البروتوكولات تدعم هذا الترميز فقط، ويمكن بعدها تشفير البيانات ضمن الحدود على أساس كل جزء على حدة، وهذا ما يفعله هذا المثال بالضبط. الجزء الأول الذي يتضمن رسالة من النوع text/plain يُعرَّف على أنّه 8 بت بما أنّه قد يكون من الضروري أن يدعم محارف إضافية، في هذه الحالة تُستخدم مجموعة المحارف Latin1 (iso-8859-1)، الجزء الثاني هو المرفق لذا يُعرَّف على أنّه بترميز الأساس 64 application/octet-stream. بما أنّ الأساس 64 يحوّل البيانات إلى المجال 7 بت، يمكن أن تُرسَل عبر عمليات نقل مقيدة. إرسال بريد إلكتروني يحتوي على نص بسيط باستخدام PHPMailer بريد إلكتروني يحتوي على نص بسيط <?php $mail = new PHPMailer(); $mail->From = "from@example.com"; $mail->FromName = "Full Name"; $mail->addReplyTo("reply@example.com", "Reply Address"); $mail->Subject = "Subject Text"; $mail->Body = "This is a sample basic text email using PHPMailer."; if($mail->send()) { // (1) header('Location: http://example.com/path/to/thank-you.php', true, 303); exit; } else { echo "Mailer Error: " . $mail->ErrorInfo; } في الموضع (1) تكون الدالة أرجعت القيمة TRUE وسيُعاد التوجيه إلى صفحة thank-you، نستخدم النمط POST/REDIRECT/GET لمنع إعادة إرسال النموذج عندما يحدّث المستخدم الصفحة. إضافة مستقبلين إضافيين، مستقبلين نسخة إضافية (CC)، مستقبلين نسخة إضافية محجوبين (BCC) <?php $mail = new PHPMailer(); $mail->From = "from@example.com"; $mail->FromName = "Full Name"; $mail->addReplyTo("reply@example.com", "Reply Address"); $mail->addAddress("recepient1@example.com", "Recepient Name"); $mail->addAddress("recepient2@example.com"); $mail->addCC("cc@example.com"); $mail->addBCC("bcc@example.com"); $mail->Subject = "Subject Text"; $mail->Body = "This is a sample basic text email using PHPMailer."; if($mail->send()) { // (1) header('Location: http://example.com/path/to/thank-you.php', true, 303); exit; } else { echo "Error: " . $mail->ErrorInfo; } في الموضع (1) تكون الدالة أرجعت القيمة TRUE وسيُعاد التوجيه إلى صفحة thank-you، نستخدم النمط POST/REDIRECT/GET لمنع إعادة إرسال النموذج عندما يحدّث المستخدم الصفحة. إرسال بريد إلكتروني باستخدام PHPMailer إليك مثال عن إرسال بريد إلكتروني يحتوي على صيغة HTML باستخدام PHPMailer: <?php $mail = new PHPMailer(); $mail->From = "from@example.com"; $mail->FromName = "Full Name"; $mail->addReplyTo("reply@example.com", "Reply Address"); $mail->addAddress("recepient1@example.com", "Recepient Name"); $mail->addAddress("recepient2@example.com"); $mail->addCC("cc@example.com"); $mail->addBCC("bcc@example.com"); $mail->Subject = "Subject Text"; $mail->isHTML(true); $mail->Body = "<html><body><p><b>This paragraph is bold.</b></p><p><i>This text is italic.</i></p></body></html>"; $mail->AltBody = "This paragraph is not bold.\n\nThis text is not italic."; if($mail->send()) { // (1) header('Location: http://example.com/path/to/thank-you.php', true, 303); exit; } else { echo "Error: " . $mail->ErrorInfo; } في الموضع (1) تكون الدالة أرجعت القيمة TRUE وسيُعاد التوجيه إلى صفحة thank-you، نستخدم النمط POST/REDIRECT/GET لمنع إعادة إرسال النموذج عندما يحدّث المستخدم الصفحة. إرسال بريد إلكتروني مع مرفق باستخدام PHPMailer <?php $mail = new PHPMailer(); $mail->From = "from@example.com"; $mail->FromName = "Full Name"; $mail->addReplyTo("reply@example.com", "Reply Address"); $mail->Subject = "Subject Text"; $mail->Body = "This is a sample basic text email with an attachment using PHPMailer."; // إضافة مرفق ثابت $attachment = '/path/to/your/file.pdf'; $mail->AddAttachment($attachment , 'RenamedFile.pdf'); // إضافة مرفق ثانٍ يُنشأ وقت التنفيذ مثل CSV ليُفتح باستخدام إكسل $csvHeader = "header1,header2,header3"; $csvData = "row1col1,row1col2,row1col3\nrow2col1,row2col2,row2col3"; $mail->AddStringAttachment($csvHeader ."\n" . $csvData, 'your-csv-file.csv', 'base64', 'application/vnd.ms-excel'); if($mail->send()) { // (1) header('Location: http://example.com/path/to/thank-you.php', true, 303); exit; } else { echo "Error: " . $mail->ErrorInfo; } في الموضع (1) تكون الدالة أرجعت القيمة TRUE وسيُعاد التوجيه إلى صفحة thank-you، نستخدم النمط POST/REDIRECT/GET لمنع إعادة إرسال النموذج عندما يحدّث المستخدم الصفحة. إرسال بريد إلكتروني يحتوي على نص بسيط باستخدام Sendgrid بريد إلكتروني يحتوي على نص بسيط <?php $sendgrid = new SendGrid("YOUR_SENDGRID_API_KEY"); $email = new SendGrid\Email(); $email->addTo("recipient@example.com") ->setFrom("sender@example.com") ->setSubject("Subject Text") ->setText("This is a sample basic text email using "); $sendgrid->send($email); إضافة مستقبلين إضافيين، مستقبلين نسخة إضافية (CC)، مستقبلين نسخة إضافية محجوبين (BCC) <?php $sendgrid = new SendGrid("YOUR_SENDGRID_API_KEY"); $email = new SendGrid\Email(); $email->addTo("recipient@example.com") ->setFrom("sender@example.com") ->setSubject("Subject Text") ->setHtml("<html><body><p><b>This paragraph is bold.</b></p><p><i>This text is italic.</i></p></body></html>"); $personalization = new Personalization(); $email = new Email("Recepient Name", "recepient1@example.com"); $personalization->addTo($email); $email = new Email("RecepientCC Name", "recepient2@example.com"); $personalization->addCc($email); $email = new Email("RecepientBCC Name", "recepient3@example.com"); $personalization->addBcc($email); $email->addPersonalization($personalization); $sendgrid->send($email); إرسال بريد إلكتروني مع مرفق باستخدام Sendgrid إليك الشيفرة الكاملة: <?php $sendgrid = new SendGrid("YOUR_SENDGRID_API_KEY"); $email = new SendGrid\Email(); $email->addTo("recipient@example.com") ->setFrom("sender@example.com") ->setSubject("Subject Text") ->setText("This is a sample basic text email using "); $attachment = '/path/to/your/file.pdf'; $content = file_get_contents($attachment); $content = chunk_split(base64_encode($content)); $attachment = new Attachment(); $attachment->setContent($content); $attachment->setType("application/pdf"); $attachment->setFilename("RenamedFile.pdf"); $attachment->setDisposition("attachment"); $email->addAttachment($attachment); $sendgrid->send($email); ترجمة -وبتصرف- للفصل [Sending Email] من كتاب PHP Notes for Professionals book اقرأ أيضًا المقال التالي: ملاحظات حول استعمال بروتوكول IMAP في PHP المقال السابق: استخدام MongoDB و Redis في PHP1 نقطة