es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuando enviamos un correo electrónico con información del trabajo y se produce un error en la cola.

Cuando envío correos electrónicos muestra estos errores

Código:

ReflectionException
El método App\Mail\Newsletter::__invoke() no existe

Estos son mis controladores:
captura de pantalla
Código:

dispatch(new Newsletter($emailSubject,$emailBody,$arrayEmails));

Estas son mis clases de correo electrónico:
captura de pantalla
Código:

public function build()
{
    return $this->view('emails.newsletter')->subject($this->emailSubject)->with(['msg'=> $this->emailBody]);
}

Estos son mis trabajos:
captura de pantalla
Código:

public function handle()
{
    $email = new Newsletter($this->emailSubject,$this->emailBody,$this->arrayEmails);
    Mail::to($this->arrayEmails)->send($email);
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el método __invoke() no existe en la clase App\Mail\Newsletter. Esto puede ser porque la clase Newsletter está siendo invocada como una función en lugar de un objeto.

    Al examinar el código proporcionado, parece que la clase Newsletter se está pasando como parámetro a la función dispatch en el controlador, y luego es manejada por la función handle en el trabajo. En este caso, la clase Newsletter debe ser instanciada como un objeto en la función handle, y su método build debe ser llamado.

    Para solucionar el problema, agregue paréntesis después de Newsletter en la función handle para crear un objeto:

    $email = (new Newsletter($this->emailSubject,$this->emailBody,$this->arrayEmails))->build();
    

    Esto creará una nueva instancia de la clase Newsletter y llamará a su método build, que devolverá la vista del correo electrónico generada. Luego se puede llamar a la función Mail::to() con el array de direcciones de correo electrónico y el objeto de correo electrónico generado para enviar los correos electrónicos.

Comments are closed.