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

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

Emad Saif

السؤال

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...