haa*_*kym 52 php email laravel laravel-4
在使用Laravel的回调时,我似乎无法成功发送到多个地址Mail::send()
,但是当我只指定一个收件人时,代码可以正常工作.
我试过链接:
// for example
$emails = array("myemail1@email.com", "myemail2@email.com");
$input = Input::all();
Mail::send('emails.admin-company', array('body' => Input::get('email_body')),
function($message) use ($emails, $input) {
$message
->from('admin@admin.org', 'Administrator')
->subject('Admin Subject');
foreach ($emails as $email) {
$message->to($email);
}
});
Run Code Online (Sandbox Code Playgroud)
并传递一个数组:
// for example
$emails = array("myemail1@email.com", "myemail2@email.com");
$input = Input::all();
Mail::send('emails.admin-company', array('body' => Input::get('email_body')),
function($message) use ($emails, $input) {
$message
->from('admin@admin.org', 'Administrator')
->subject('Admin Subject');
$message->to($emails);
});
Run Code Online (Sandbox Code Playgroud)
但似乎没有工作,我在返回Mail :: failures()时收到失败消息,Mail :: failures()的var_dump()显示我尝试发送到的电子邮件地址,例如:
array(2) {
[0]=>
string(18) "myemail1@email.com"
[1]=>
string(18) "myemail2@email.com"
}
Run Code Online (Sandbox Code Playgroud)
显然做错了什么,会感谢任何帮助,因为我不理解API:http://laravel.com/api/4.2/Illuminate/Mail/Message.html#method_to
我意识到我可以把这个Mail::send()
方法放在for/foreach循环和Mail::send()
每个电子邮件地址中,但这对我来说似乎不是最佳解决方案,我希望->bcc()
一旦一切正常,我也能够到所有地址收件人不会看到邮件发送给谁.
Mar*_*łek 94
我使用以下代码测试了它:
$emails = ['myoneemail@esomething.com', 'myother@esomething.com','myother2@esomething.com'];
Mail::send('emails.welcome', [], function($message) use ($emails)
{
$message->to($emails)->subject('This is test e-mail');
});
var_dump( Mail:: failures());
exit;
Run Code Online (Sandbox Code Playgroud)
结果 - 失败的空数组.
但是当然你需要app/config/mail.php
正确配置.因此,首先要确保您只能向一个用户发送电子邮件,然后与许多用户一起测试您的代码.
此外,使用这个简单的代码我的电子邮件都没有发送到免费邮件帐户,我只收到了我收费主机帐户收件箱的电子邮件,所以可能他们被一些过滤器捕获了(这可能是简单的主题/内容问题但是我提到它只是为了你没有收到一些电子邮件).
Abh*_*hek 20
如果您想同时向所有管理员发送电子邮件,您可以执行以下操作:
在.env文件中,将所有电子邮件添加为逗号分隔值:
ADMIN_EMAILS=admin1@site.com,admin2@site.com,admin3@site.com
Run Code Online (Sandbox Code Playgroud)
所以当你要发送电子邮件时,就这样做(是的!消息构建器实例的'to'方法接受一个数组):
所以,
$to = explode(',', env('ADMIN_EMAILS'));
Run Code Online (Sandbox Code Playgroud)
和...
$message->to($to);
Run Code Online (Sandbox Code Playgroud)
现在将邮件发送给所有管理员.
Tos*_*kan 12
接受的答案并没有任何再与laravel 5.3,因为可邮寄试图访问工作->email
和结果
Mailable.php第376行中的ErrorException:尝试获取非对象的属性
laravel 5.3的工作代码是这样的:
$users_temp = explode(',', 'first@example.com,second@example.com');
$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));
Run Code Online (Sandbox Code Playgroud)
使用Laravel 5.6,如果要传递多个带有名称的电子邮件,则需要传递关联数组的数组.将多个收件人推入$to
阵列的示例:
$to[] = array('email' => $email, 'name' => $name);
Run Code Online (Sandbox Code Playgroud)
修复了两个收件人:
$to = [['email' => 'user.one@example.com', 'name' => 'User One'],
['email' => 'user.two@example.com', 'name' => 'User Two']];
Run Code Online (Sandbox Code Playgroud)
'name'键不是必需的.您可以将其设置为'name' => NULL
或不添加到关联数组,然后才会'email'
使用.
您可以像这样循环接收者:
foreach (['taylor@example.com', 'dries@example.com'] as $recipient) {
Mail::to($recipient)->send(new OrderShipped($order));
}
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档
如果您打算在一个实例中将一封电子邮件推送给不同的收件人(即抄送多个电子邮件地址),下面的解决方案适用于Laravel 5.4 及更高版本。
Mail::to('dunsin.olubobokun@domain.com')
->cc(['paul.yomi@domain.com','stack.overflow@domain.com','abc.xyz@domain.com','nigeria@domain.com'])
->send(new document());
Run Code Online (Sandbox Code Playgroud)
其中document是进一步自定义您的电子邮件的任何类。
归档时间: |
|
查看次数: |
108839 次 |
最近记录: |