master
cody 4 months ago
parent e8d7ce1173
commit 1a8b2a9af7

@ -55,12 +55,12 @@ class SendEmail extends Command
$emailRecordUsers = $records->emailRecordUsers->where('status', 0);
foreach ($emailRecordUsers as $recordUser) {
// 替换后的标题
$title = EmailRecordUser::template($records->subject, $recordUser);
$title = EmailRecordUser::template($records->subject, $recordUser->var_data);
// 替换后的内容
$template = EmailRecordUser::template($emailTemplate->content, $recordUser);
$template = EmailRecordUser::template($emailTemplate->content, $recordUser->var_data);
try {
// 发送邮件
EmailRecordUser::email($title, $template, $recordUser);
EmailRecordUser::email($title, $template, $recordUser->email);
$recordUser->status = 1;
} catch (\Exception $e) {
$recordUser->status = 2;

@ -216,6 +216,53 @@ class EmailRecordController extends BaseController
}
}
/**
* @OA\Post(
* path="/api/admin/email-record/send-example",
* tags={"邮件发送配置"},
* summary="发送测试邮件",
* description="",
* @OA\Parameter(name="email_template_id", in="query", @OA\Schema(type="integer", format="int64"), required=true, description="模版id"),
* @OA\Parameter(name="subject", in="query", @OA\Schema(type="string", format="date"), required=false, description="标题"),
* @OA\Parameter(name="email", in="query", @OA\Schema(type="string", format="date"), required=false, description="邮箱地址"),
* @OA\Parameter(name="var_data", in="query", @OA\Schema(type="string", format="mediumtext"), required=false, description="数组var_data自定义数据"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="认证token"),
* @OA\Response(
* response="200",
* description="操作成功"
* )
* )
*/
public function sendExample()
{
$all = \request()->all();
$validator = Validator::make($all, [
'email_template_id' => 'required',
'subject' => 'required',
'email' => 'required',
'var_data' => 'required',
]);
if ($validator->fails()) {
return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
}
try {
$emailTemplate = EmailTemplate::find($all['email_template_id']);
// 替换后的标题
$title = EmailRecordUser::template($all['subject'], $all['var_data']);
// 替换后的内容
$template = EmailRecordUser::template($emailTemplate->content, $all['var_data']);
try {
// 发送邮件
EmailRecordUser::email($title, $template, $all['email']);
return $this->success("发送成功");
} catch (\Exception $e) {
return $this->fail([ResponseCode::ERROR_BUSINESS, $e->getMessage()]);
}
} catch (\Exception $exception) {
return $this->fail([$exception->getCode(), $exception->getMessage()]);
}
}
/**
* @OA\Get(
* path="/api/admin/email-record/destroy",

@ -21,9 +21,8 @@ class EmailRecordUser extends SoftDeletesModel
* @param $template
* @param $email_record_users
*/
public static function template($template, $record_user)
public static function template($template, $var_data)
{
$var_data = $record_user->var_data;
foreach ($var_data as $key => $var) {
$template = str_replace('{' . $key . '}', $var, $template);
}
@ -34,11 +33,11 @@ class EmailRecordUser extends SoftDeletesModel
/**
* 发送邮件
*/
public static function email($title, $template, $record_user)
public static function email($title, $template, $email)
{
Mail::send('email', compact('template'), function ($message) use ($record_user, $title) {
Mail::send('email', compact('template'), function ($message) use ($email, $title) {
$message->from(env('MAIL_USERNAME'), '苏州科技商学院');
$message->to($record_user->email)->subject($title);
$message->to($email)->subject($title);
});
return true;
}

@ -215,6 +215,7 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () {
Route::get('email-record/index', [\App\Http\Controllers\Admin\EmailRecordController::class, "index"]);
Route::get('email-record/show', [\App\Http\Controllers\Admin\EmailRecordController::class, "show"]);
Route::post('email-record/save', [\App\Http\Controllers\Admin\EmailRecordController::class, "save"]);
Route::post('email-record/send-example', [\App\Http\Controllers\Admin\EmailRecordController::class, "sendExample"]);
Route::get('email-record/destroy', [\App\Http\Controllers\Admin\EmailRecordController::class, "destroy"]);
Route::post('email-record/excel-show', [\App\Http\Controllers\Admin\EmailRecordController::class, "excelShow"]);
});

Loading…
Cancel
Save