Quiero enviar un correo a través de laravel. Por alguna razón, solo quiero configurar el cc antes de llamar al método de send :
Mail::cc($cc_mail)->send(new MyMailAlert()); Luego defino el destinatario ( to ) directamente en el método de build de mi clase Mailable:
$this->subject($subject)->to($to_email)->view('my-mail');Pero falla:
Symfony\Component\Debug\Exception\FatalThrowableError: Llamada al método no definido Illuminate\Mail\Mailer::cc()
¿Cómo puedo enviar un correo sin conocer al destinatario antes de enviarlo en el método de build ? En otras palabras, quiero configurar el destinatario (a) directamente en el método de build y no sé cómo hacerlo.
Aquí hay un truco para lidiar con este problema:
Mail::to([])->cc($cc_mail)->send(new MyMailAlert()); Así que simplemente agregue un método to() con una matriz vacía y funcionará. Todavía es un truco, no estoy muy seguro de que funcione en el futuro.
cc está documentado en Laravel Docs , pero no puedo encontrar el método o la propiedad en el código fuente de Illuminate\Mail\Mailer , ni en la documentación de la API de Laravel . Así que no puedes usarlo de esta manera.
Pero Illuminate\Mail\Mailable tiene la propiedad cc . Entonces, si desea agregar el cc antes de enviar y agregar el método to compilación, necesita algo como esto:
AlertaMiCorreo.php
class MyMailAlert extends Mailable implements ShouldQueue { use Queueable, SerializesModels; /** * Create a new message instance. */ public function __construct() { // } /** * Build the message. * * @return $this */ public function build() { return $this->subject($this->subject)->to($this->to)->view('my-mail'); } }En su controlador:
$myMailAlert = new MyMailAlert(); $myMailAlert->cc = $cc_mail; // At this point you have cc already setted. Mail::send($myMailAlert); // Here you sends the mail Tenga en cuenta que el método de compilación usa el subject y to propiedades de la instancia que se puede enviar por correo, por lo que debe configurarlo antes de enviarlo.
No estoy seguro de dónde está recuperando su $subject y $to_email en su ejemplo de método de compilación, pero para mi ejemplo, debe dar estos valores a $myMailAlert->subject y $myMailAlert->to . Puede usar sus variables personalizadas en el método de compilación, pero dado que la clase ya tiene estas propiedades, las variables personalizadas no son necesarias.