اذهب إلى المحتوى
  • 0

إرسال بريد إلكتروني باستخدام php

Khaled Mohammed7

السؤال

Recommended Posts

  • 0

صحيح دالة mail تستخدم لأرسال بريد إلكتروني على البريد الإلكتروني الذي تود إرسال له هذا البريد, في البداية حتى تستطيع ارسال بريد إلكتروني من خلال أي صفحة بالموقع يجب أن نعرف دالة تكون قابلة للاستخدام بأي وقت و من أي صفحة فمثلاً يمكننا إنشاء دالة باسم sendMail بهذا الشكل 

function sendMail( )
{
        
        
}

ثم نمرر لها المتغيرات التالية 

function sendMail( $to, $from, $subject, $message )
{

}

حيث أن المتغير 

$to

هو البريد الإلكتروني الذي نود إرسال بريد إليه. و متغير 

$from

هو البريد لصاحب الموقع أو للشخص الذي قام بإرسال هذا البريد. و 

$subject

هو عنوان البريد المرسل و 

$message

هو نص الرسالة التي تم إرسالها بالبريد ثم بداخل الدالة نقوم بوضع ترميز utf-8 لعنوان الرسالة كما في الكود التالي 

$subject = sprintf( "=?utf-8?B?".base64_encode( $subject )."?=" );

ثم قمنا بإرسال headers الازمة عن طريق متغير 

$headers
$headers = sprintf( "To: %s <%s>\nFrom: %s\nMIME-Version: 1.0\nContent-type: text/html; charset=utf-8", $to, $to, $from );

ثم قمنا بتمرير المتغيرات إلى دالة mail كما في الكود التالي 

return mail( $to, $subject, $message, $headers );

فتكون كامل الدالة 

function sendMail( $to, $from, $subject, $message )
{
        $subject = sprintf( "=?utf-8?B?".base64_encode( $subject )."?=" );
        $headers = sprintf( "To: %s <%s>\nFrom: %s\nMIME-Version: 1.0\nContent-type: text/html; charset=utf-8", $to, $to, $from);
        return mail( $to, $subject, $message, $headers );
}

ويمكن استخدام الدالة بهذه الطريقة 

<?php 
$to = "البريد المرسل إليه";
$from = "بريد المرسل";
$subject = "عنوان البريد";
$message = "نص البريد";
sendMail($to,$from,$subject,$message);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

بالإضافة لما شرحه بلال فإنه يمكنك إرسال ال mail بواسطة الدالة mail  ولكن في بعض الأحيان لا تكون هذه الدالة كافية أو لا تلائم إحتياجاتك مثل الأمان والتشفير أو المرفقات لذلك تحتاج لاستخدام مكتبة لتنفيذ المطلوب مثل PHPMailer

لتثبيت المكتبة بواسطة composer

composer require phpmailer/phpmailer

لاحظ المثال التالي 

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    //إعدادات الخادم
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                     
    $mail->isSMTP();                                            //استخدام SMTP
    $mail->Host       = 'smtp.example.com';                     
    $mail->SMTPAuth   = true;                                   
    $mail->Username   = 'user@example.com';                     // username
    $mail->Password   = 'secret';                               // password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            
    $mail->Port       = 465;     
  
    //Recipients
    $mail->setFrom('from@example.com', 'Mailer');
    $mail->addAddress('joe@example.net', 'Joe User');     //Add a recipient
    $mail->addAddress('ellen@example.com');               //Name is optional
    $mail->addReplyTo('info@example.com', 'Information');
    $mail->addCC('cc@example.com');
    $mail->addBCC('bcc@example.com');

  
    $mail->addAttachment('/var/tmp/file.tar.gz');         //المرفقات
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    //Optional name

    //المحتوى
    $mail->isHTML(true);                                  //محتوى html
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

يمكنك القراءة حول المكتبة أكثر من الرابط بالأعلى

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...