php - 发送包含与收件人相关内容的 laravel 邮件
问题描述
如何发送包含与特定公司相关的产品详细信息的邮件,请参阅以下代码以进行进一步说明:
这是我的 Controller.php 代码:
foreach ($order->products as $product){
foreach ([$product->company_email] as $recipient) {
Mail::to($recipient)->send(new SendCompanyEmail($order));
}
}
这是我的 SendCompanyEmail.php 代码:
public function __construct(Order $order)
{
$this->order = $order;
}
public function build()
{
return $this->markdown('emails.company-email')
->subject('New Order Placed');
}
这是我的 company-email.blade.php 代码:
@foreach($order->products as $product)
Name: {{ $product->name }}
Price: {{ $product->price }} USD
Company Email: {{ $product->company_email }}
@endforeach
我从 2 家不同的公司订购了 2 种产品,我希望向每家公司发送一封包含其产品详细信息的电子邮件。
问题是,当电子邮件发送时,它会发送给两家公司,但会发送我订购的所有产品。
这是输出电子邮件:
至:company1@company1.com
Name: Product 1
Price: 10.00 USD
Company Email: company1@company1.com
Name: Product 2
Price: 12.00 USD
Company Email: company2@company2.com
至:company2@company2.com
Name: Product 1
Price: 10.00 USD
Company Email: company1@company1.com
Name: Product 2
Price: 12.00 USD
Company Email: company2@company2.com
我真正想要的是将电子邮件发送给两家公司,但要附上各自的产品详细信息。
这是我想要的输出电子邮件:
至:company1@company1.com
Name: Product 1
Price: 10.00 USD
Company Email: company1@company1.com
至:company2@company2.com
Name: Product 2
Price: 12.00 USD
Company Email: company2@company2.com
解决方案
您应该按每家公司对您的产品进行分组。
In your controller, do the grouping logic and send for each email an array of products:
$companiesProducts = [];
foreach ($order->products as $product) {
$companiesProducts[$product->company_email][] = $product;
}
foreach ($companiesProducts as $email => $products) {
Mail::to($email)->send(new SendCompanyEmail($products));
}
In your email class:
public function __construct($products)
{
$this->products = $products;
}
public function build()
{
// pass $this->products to your email view
return $this->markdown('emails.company-email')
->subject('New Order Placed');
}
And in your view file change $order->products
to the products parameter you've passed.
推荐阅读
- git - 如何在 golang 中获取当前存储库的 git 标签(或分支名称)?
- amazon-web-services - 同步传输工作时,AWS/s3 中的异步传输失败
- tensorflow - 如何使用 tensorflow 联合进行数据扩充?
- javascript - 如何将 UnityEngine.UI.Button 转换为字符串
- java - 将 for 循环转换为 hashmap 打印的方法签名
- php - 如何从 Laravel API 中的集合中返回单个对象
- java - 如何在springboot中返回一个json结果
- javascript - 使用 Leaflet 计算分数缩放
- python - 可散列、可调用数据类的 Python 类型提示
- javascript - 检测过滤后是否更改列表 - Javascript