LaravelのMail::send()
コールバックを使用すると、multipleアドレスに正常に送信できないようですが、one受信者。
私は連鎖を試みました:
// 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);
}
});
配列を渡す:
// 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);
});
しかし、どちらも動作していないようで、Mail :: failures()を返すときに失敗メッセージが表示されます。Mail:: failures()のvar_dump()には、送信しようとしたメールアドレスが表示されます。
array(2) {
[0]=>
string(18) "[email protected]"
[1]=>
string(18) "[email protected]"
}
APIを理解していないので、明らかに何か間違ったことをしていると、助けに感謝します: http://laravel.com/api/4.2/Illuminate/Mail/Message.html#method_to
Mail::send()
メソッドをfor/foreachループに、Mail::send()
を各メールアドレスに配置できることを理解していますが、これは最適なソリューションではないようです。すべてが機能したら、すべてのアドレスに->bcc()
できるため、受信者はメールの送信先が他に誰にもわからないようになります。
次のコードを使用してテストしました。
$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;
結果-失敗の場合は空の配列。
ただし、当然、app/config/mail.php
を適切に構成する必要があります。そのため、最初に1人のユーザーだけに電子メールを送信できることを確認してから、多くのユーザーでコードをテストしてください。
さらに、このシンプルなコードを使用すると、無料のメールアカウントにメールが配信されず、有料のホスティングアカウントにある受信トレイにメールが届くだけだったため、おそらくいくつかのフィルターでキャッチされました(おそらく簡単なトピック/コンテンツの問題ですが、いくつかの電子メールを受信していない場合に備えて言及しました)。
すべての管理者に同時にメールを送信する場合は、次のようなことができます。
.envファイルに、すべての電子メールをコンマ区切り値として追加します。
[email protected],[email protected],[email protected]
したがって、メールを送信するときは、これを行うだけです(はい!メッセージビルダーインスタンスの 'to'メソッドは配列を受け入れます)。
そう、
$to = explode(',', env('ADMIN_EMAILS'));
そして...
$message->to($to);
これで、すべての管理者にメールが送信されます。
Laravel 5.6を使用して、名前付きの複数の電子メールを渡す場合は、連想配列の配列を渡す必要があります。複数の受信者を$to
配列にプッシュする例:
$to[] = array('email' => $email, 'name' => $name);
2人の受信者を修正しました:
$to = [['email' => '[email protected]', 'name' => 'User One'],
['email' => '[email protected]', 'name' => 'User Two']];
「名前」キーは必須ではありません。 'name' => NULL
に設定するか、連想配列に追加しないで、'email'
のみを使用できます。
Laravel 5.6とNotifications Facadeを使用しています。
Eメールをコンマで区切って変数を設定して送信しようとすると、「指定されたメールのアドレスはRFC 2822、3.6.2に準拠していません」というエラーが表示されます。
そこで、問題を解決するために、@ Toskanから次のコードを作成して解決策のアイデアを得ました。
// 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");
});
1人または複数の受信者に送信するのに役立ちました。 ????
これはうまく機能します-私はリクエストオブジェクトと電子メール配列にアクセスできます
$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");
});
以下のソリューションでは、単一のメールを複数のアドレスに同時に送信できます。 Laravel 5.4以降で正常に動作します。 たとえば、、次のメールアドレスが希望する受信者の場合、たとえば:'[email protected] '、' paul.yomi @ domain.com '、' [email protected] '、' [email protected] '、' [email protected] ' 、
Mail::to('[email protected]')
->cc(['[email protected]','[email protected]','[email protected]','[email protected]'])
->send(new document());
documentは、メールをさらにカスタマイズするクラスです。