template mail from example enviar con como php email laravel laravel-4

php - from - mail::send laravel example



Laravel Mail:: send() enviando a mĂșltiples direcciones bcc o (8)

Con Laravel 5.6, si desea pasar múltiples correos electrónicos con nombres, debe pasar una matriz de matrices asociativas. Ejemplo que empuja a múltiples destinatarios a $to array:

$to[] = array(''email'' => $email, ''name'' => $name);

Se corrigieron dos destinatarios:

$to = [[''email'' => ''[email protected]'', ''name'' => ''User One''], [''email'' => ''[email protected]'', ''name'' => ''User Two'']];

La clave ''nombre'' no es obligatoria. Puede establecerlo en ''name'' => NULL o no agregarlo a la matriz asociativa, solo se usará ''email'' .

Parece que no puedo enviar con éxito a varias direcciones cuando uso la devolución de llamada Mail::send() Laravel, sin embargo, el código funciona cuando solo especifico un destinatario.

He intentado encadenar:

// for example $emails = array("[email protected]", "[email protected]"); $input = Input::all(); Mail::send(''emails.admin-company'', array(''body'' => Input::get(''email_body'')), function($message) use ($emails, $input) { $message ->from(''[email protected]'', ''Administrator'') ->subject(''Admin Subject''); foreach ($emails as $email) { $message->to($email); } });

y pasando una matriz:

// for example $emails = array("[email protected]", "[email protected]"); $input = Input::all(); Mail::send(''emails.admin-company'', array(''body'' => Input::get(''email_body'')), function($message) use ($emails, $input) { $message ->from(''[email protected]'', ''Administrator'') ->subject(''Admin Subject''); $message->to($emails); });

pero ninguno parece funcionar y recibo mensajes de error al devolver Mail :: failures (), un var_dump () de Mail :: failures () muestra las direcciones de correo electrónico que intenté enviar, por ejemplo:

array(2) { [0]=> string(18) "[email protected]" [1]=> string(18) "[email protected]" }

Claramente haciendo algo mal, agradecería cualquier ayuda ya que tampoco entiendo la API: http://laravel.com/api/4.2/Illuminate/Mail/Message.html#method_to

Me doy cuenta de que podría poner el método Mail::send() en un bucle for / foreach y Mail::send() para cada dirección de correo electrónico, pero esta no me parece la solución óptima, esperaba que lo hiciera también podrá ->bcc() a todas las direcciones una vez que todo esté funcionando para que los destinatarios no vean a quién más se está enviando el correo.


Esto funciona muy bien: tengo acceso al objeto de solicitud y a la matriz de correo electrónico

$emails = [''[email protected]'', ''[email protected]'']; Mail::send(''emails.lead'', [''name'' => $name, ''email'' => $email, ''phone'' => $phone], function ($message) use ($request, $emails) { $message->from(''[email protected]'', ''Joe Smoe''); // $message->to( $request->input(''email'') ); $message->to( $emails); //Add a subject $message->subject("New Email From Your site"); });


Estoy usando Laravel 5.6 y la Fachada de notificaciones.

Si configuro una variable con una coma que separa los correos electrónicos e intento enviarla, aparece el error: "La dirección en el correo proporcionado no cumple con RFC 2822, 3.6.2"

Entonces, para resolver el problema, obtuve la idea de la solución de @Toskan, codificando lo siguiente.

// Get data from Database $contacts = Contacts::select(''email'') ->get(); // Create an array element $contactList = []; $i=0; // Fill the array element foreach($contacts as $contact){ $contactList[$i] = $contact->email; $i++; } . . . /Mail::send(''emails.template'', [''templateTitle''=>$templateTitle, ''templateMessage''=>$templateMessage, ''templateSalutation''=>$templateSalutation, ''templateCopyright''=>$templateCopyright], function($message) use($emailReply, $nameReply, $contactList) { $message->from(''[email protected]'', ''Some Company Name'') ->replyTo($emailReply, $nameReply) ->bcc($contactList, ''Contact List'') ->subject("Subject title"); });

Me funcionó enviar a uno o varios destinatarios. 😉


La solución a continuación le permite enviar un solo correo electrónico a varias direcciones al mismo tiempo. Funciona bien con Laravel 5.4 y superior . Por ejemplo , si las siguientes direcciones de correo electrónico son sus destinatarios deseados, diga: ''[email protected]'', ''[email protected]'', ''[email protected]'', ''abc.xyz @ dominio.com '','' [email protected] '' ,

Mail::to(''[email protected]'') ->cc([''[email protected]'',''[email protected]'',''[email protected]'',''[email protected]'']) ->send(new document());

donde documento es cualquier clase que personaliza aún más su correo electrónico.


Lo probé usando el siguiente código:

$emails = [''[email protected]'', ''[email protected]'',''[email protected]'']; Mail::send(''emails.welcome'', [], function($message) use ($emails) { $message->to($emails)->subject(''This is test e-mail''); }); var_dump( Mail:: failures()); exit;

Resultado: matriz vacía para fallas.

Pero, por supuesto, debe configurar su app/config/mail.php correctamente. Así que primero asegúrese de poder enviar un correo electrónico a un solo usuario y luego pruebe su código con muchos usuarios.

Además, al usar este código simple, ninguno de mis correos electrónicos se enviaron a cuentas de correo gratuitas, solo recibí correos electrónicos en las bandejas de entrada que tengo en mis cuentas de alojamiento pagado, por lo que probablemente fueron atrapados por algunos filtros (tal vez sea un tema simple / problema de contenido, pero Lo mencioné solo en caso de que no haya recibido algunos correos electrónicos).


Si desea enviar correos electrónicos simultáneamente a todos los administradores, puede hacer algo como esto:

En su archivo .env, agregue todos los correos electrónicos como valores separados por comas:

[email protected],[email protected],[email protected]

así que cuando va a enviar el correo electrónico simplemente haga esto (sí, el método ''a'' de la instancia del generador de mensajes acepta una matriz):

Entonces,

$to = explode('','', env(''ADMIN_EMAILS''));

y...

$message->to($to);

ahora enviará el correo a todos los administradores.


funciona bien para mí, si tienes una cadena, simplemente explótala primero.

$ correos electrónicos = array ();

Mail::send(''emails.maintenance'',$mail_params, function($message) use ($emails) { foreach ($emails as $email) { $message->to($email); } $message->subject(''My Email''); });


la respuesta aceptada ya no funciona con laravel 5.3 porque mailable intenta acceder ->email y da como resultado

ErrorException en la línea 376 de Mailable.php: Intentando obtener la propiedad de no objeto

un código de trabajo para laravel 5.3 es este:

$users_temp = explode('','', ''[email protected],[email protected]''); $users = []; foreach($users_temp as $key => $ut){ $ua = []; $ua[''email''] = $ut; $ua[''name''] = ''test''; $users[$key] = (object)$ua; } Mail::to($users)->send(new OrderAdminSendInvoice($o));