Browse Source

feat: 添加询盘发送邮件

igb 4 months ago
parent
commit
d64bc7b35a
2 changed files with 46 additions and 27 deletions
  1. 4 27
      app/Http/Controllers/ContactController.php
  2. 42 0
      app/Services/MailService.php

+ 4 - 27
app/Http/Controllers/ContactController.php

@@ -5,9 +5,8 @@ namespace App\Http\Controllers;
 use Illuminate\Http\Request;
 use App\Services\LiquidRenderer;
 use App\Models\DistInquiry;
-use App\Mail\InquiryMail;
-use Illuminate\Support\Facades\Mail;
 
+use App\Services\MailService;  // 导入 MailService
 class ContactController extends Controller
 {
     protected $liquidRenderer;
@@ -73,7 +72,7 @@ class ContactController extends Controller
             }
 
             // 询盘数据
-// 询盘数据
+
             $inquiryData = [
                 'order_number' => $distInquiry->order_number,
                 'customer_name' => $distInquiry->customer_name,
@@ -85,30 +84,8 @@ class ContactController extends Controller
                 'referer_url' => $distInquiry->referer_url,
             ];
 
-            // 获取配置中的收件人和抄送地址
-            $toAddress = config('mail_recipients.to.address');
-            $ccAddress = config('mail_recipients.cc.address');
-
-            // 判断收件人地址是否存在
-            if (!empty($toAddress)) {
-                $mail = Mail::to($toAddress);
-
-                // 如果有 CC 地址,添加 CC
-                if (!empty($ccAddress)) {
-                    $mail->cc($ccAddress);
-                }
-
-                // 发送邮件
-                $mail->send(new InquiryMail($inquiryData));
-
-//                // 返回响应
-//                return back()->with('success', '您的询盘已提交,我们将尽快回复您。');
-            } else {
-//                // 没有收件人地址时记录日志或返回错误信息
-//                logger()->warning('邮件未发送:缺少收件人地址');
-//                return back()->with('error', '邮件发送失败,缺少收件人地址。');
-            }
-
+            // 使用 MailService 静态方法发送邮件
+            $mailSent = MailService::sendInquiryMail($inquiryData);
 
 
             // 成功时的响应

+ 42 - 0
app/Services/MailService.php

@@ -0,0 +1,42 @@
+<?php
+namespace App\Services;
+
+use Illuminate\Support\Facades\Mail;
+use App\Mail\InquiryMail;
+
+class MailService
+{
+    /**
+     * 发送询盘邮件(静态方法)
+     *
+     * @param array $inquiryData 询盘数据
+     * @return bool 返回是否发送成功
+     */
+    public static function sendInquiryMail(array $inquiryData)
+    {
+        try {
+            $toAddress = config('mail_recipients.to.address');
+            $ccAddress = config('mail_recipients.cc.address');
+
+            if (empty($toAddress)) {
+                // 没有收件人地址时,记录日志并返回 false
+                logger()->warning('邮件未发送:缺少收件人地址');
+                return false;
+            }
+
+            $mail = Mail::to($toAddress);
+
+            if (!empty($ccAddress)) {
+                $mail->cc($ccAddress);
+            }
+
+            $mail->send(new InquiryMail($inquiryData));
+
+            return true; // 成功发送邮件
+        } catch (\Exception $e) {
+            // 处理邮件发送失败的异常
+            logger()->error('邮件发送失败: ' . $e->getMessage());
+            return false;
+        }
+    }
+}