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

السؤال

نشر

أحاول أن أرسل رسائل إلكترونية من خلال الكود التالي:

Mail::to($userEmail)->send($welcomeMessage);

كيف يمكنني التحقق من أن رسالة البريد الإلكتروني تم إرسالها بنجاح ولم يحدث مشكلة؟

أستعمل لارافيل الإصدار 8

Recommended Posts

  • 1
نشر

التابع send نفسه نختبر قيمته 

if (Mail::send(...)) {...

أو بعد إرسال البريد، يمكن التحقق من وجود أخطاء، من خلال الدالة failures التي تعيد مصفوفة بالأخطاء التي حصلت مع إرسال البريد

    // check for failed ones
    if (Mail::failures()) {
        // return failed mails
        return new Error(Mail::failures()); 
    }

أو التحقق من عددهم 

if(count(Mail::failures()) > 0){
    $errors = 'Failed to send password reset email, please try again.';
}

كما يمكن عملها ب try catch سيتم رمي استثناء في حال حدوث خطأ

try {
    Mail::to($userEmail)->send($welcomeMailable);
} catch (Exception $e) {
  //Email sent failed.
}

أو بالطريقة: اختبار نمط المتغير إن كان من الصنف SentMessage فالرسالة تم إرسالها

$welcomeEmailSent = Mail::to($userEmail)->send($welcomeMailable);

if($welcomeEmailSent instanceof \Illuminate\Mail\SentMessage){
  //email sent success
}else{
  //email sent failed
}

 

  • 1
نشر

بجانب المشار اليه من قبل المدرب وائل يمكنك التحقق من انه تم ارسال رسالة بريد الكتروني في بيئة اختبارية عن طريق التوكيد assertSent

use Illuminate\Support\Facades\Mail;
..

/** @test*/
public function a_mail_is_sent()
{
    Mail::fake();
    
    $this->post('/path/to/target' ,$someData);

    Mail::assertSent(YourMailable::class);
}

او عددا معينا من المرات:

Mail::assertSent(YourMailable::class, 2);

او تفاصيل الرسالة:

Mail::assertSent(YourMailable::class, function ($mail) use ($user) {
    return $mail->hasTo($user->email) && // مرسل الى 
           $mail->hasFrom('...') && // مرسل من طرف
           $mail->hasSubject('...'); // موضوع المراسلة
});

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...