laravel - Laravel 5.7 从作业(队列)表中读取电子邮件内容
问题描述
我正在使用 Laravel 5.7 处理工作(队列)。我已将每个周末的电子邮件安排到工作表中。对于电子邮件调度程序,我已将所有电子邮件信息(例如 From、to 、回复电子邮件地址)以及电子邮件正文存储到作业表中。
在这里,我添加了 Job 类
use Dispatchable,
InteractsWithQueue,
Queueable,
SerializesModels;
protected $details;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct() {
$this->details = $details;
}
/**
* Execute the job.
*
* @return void
*/
public function handle() {
//
$payload = json_decode($event->job->getRawBody());
$data = unserialize($payload->data->command);
echo $data;
exit;
Mail::send(
['html' => 'emails.templates'], array('body' => $body, 'title' => $post_data['subject']), function($message) use ($post_data, $employee, $clientName, $docName, $filename) {
$message->to($post_data['email'], $clientName)->subject($post_data['subject']);
$message->from('xxxx', $employee->first_name . " " . $employee->last_name);
$message->replyTo($employee->email);
}
);
echo "send Email";
exit;
}
现在,当作业句柄功能执行时,我面临着获取电子邮件内容以发送电子邮件的问题。这是获取电子邮件内容的代码
$payload = json_decode($event->job->getRawBody());
$data = unserialize($payload->data->command);
但是这段代码不起作用。我的目标是让电子邮件内容使用该内容发送电子邮件。
或者,如果您有其他发送电子邮件的解决方案或选项。也请分享你的想法。
提前谢谢你。
解决方案
在构造它时,您可以传递您希望在工作中可用的任何数据,如下所示:
MySendEmailJob::dispatch('body', 'subject', 'email', $employee, 'clientname', 'docname', 'filename');
作业本身看起来像这样:
use Dispatchable,
InteractsWithQueue,
Queueable,
SerializesModels;
/**
* @var string
*/
private $body;
/**
* @var string
*/
private $subject;
/**
* @var string
*/
private $email;
/**
* @var User
*/
private $employee;
/**
* @var string
*/
private $clientName;
/**
* @var string
*/
private $docName;
/**
* @var string
*/
private $filename;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct(
string $body,
string $subject,
string $email,
User $employee,
string $clientName,
string $docName,
string $filename
) {
$this->body = $body;
$this->subject = $subject;
$this->email = $email;
$this->employee = $employee;
$this->clientName = $clientName;
$this->docName = $docName;
$this->filename = $filename;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Mail::send(
['html' => 'emails.templates'],
['body' => $this->body, 'title' => $this->subject],
function ($message) {
$message->to($this->email, $this->clientName)->subject($this->subject);
$message->from('xxxx', $this->employee->first_name . " " . $this->employee->last_name);
$message->replyTo($this->employee->email);
}
);
}
查看Laravel 文档以获取更多示例和文档
推荐阅读
- c# - 在 C# 中交换两个引用类型变量
- java - 替换字符串中的非特定子字符串
- eclipse-plugin - 如何将遗留的 eclipse rcp 功能项目从 Mars(4.5) 迁移到 Oxygen(4.7)
- python - 对音频提示执行按键操作。这是一个简单的程序吗?
- redux - 没有重载匹配此调用 - 简单传奇示例中的 redux-saga 错误
- html - 使溢出的 div 内的行扩展 100% 的溢出 div
- asp.net-core - 登录后也能进入登录页面
- python - 屏幕评估问题和简单的 if 语句
- instagram-graph-api - 是否有可能获得 instagram-graph-api 的每日见解?
- postgresql - 通过 Azure DevOps 中的 EFCore 迁移更新 postgreSQL DB