m0_70156489 1 hónapja
szülő
commit
0aef91932f
1 módosított fájl, 33 hozzáadás és 7 törlés
  1. 33 7
      application/admin/controller/Procuremen.php

+ 33 - 7
application/admin/controller/Procuremen.php

@@ -5335,11 +5335,7 @@ class Procuremen extends Backend
             try {
                 $mailPlain = $this->renderNotifyTemplate($emailScene, $vars);
                 $mailBody = $this->plainTextToHtmlEmailBody($mailPlain);
-                // 平台链接做成可点击
-                if ($platformUrl !== '') {
-                    $esc = htmlspecialchars($platformUrl, ENT_QUOTES, 'UTF-8');
-                    $mailBody = str_replace($esc, '<a href="' . $esc . '">' . $esc . '</a>', $mailBody);
-                }
+                $mailBody = $this->appendPlatformTapLinkToEmailHtml($mailBody, $platformUrl);
                 $mailSubject = $this->resolveProcuremenEmailSubject($emailScene);
                 $mailConfig = $this->loadMailerConfig();
                 $this->issueSendSupplierEmail([
@@ -8081,6 +8077,7 @@ class Procuremen extends Backend
         $emailTplScene = trim($emailTplScene) !== '' ? trim($emailTplScene) : 'review_email';
         $mailPlain = $this->renderNotifyTemplate($emailTplScene, $notifyVars);
         $mailBody = $this->plainTextToHtmlEmailBody($mailPlain);
+        $mailBody = $this->appendPlatformTapLinkToEmailHtml($mailBody, $platformUrl);
 
         return [
             'company_name' => $companyName,
@@ -13492,7 +13489,7 @@ class Procuremen extends Backend
     }
 
     /**
-     * 模版纯文本转邮件 HTML:换行转 &lt;br&gt;,保留已替换进的 &lt;a&gt; 等标签
+     * 模版纯文本转邮件 HTML:换行转 &lt;br&gt;;http(s) 链接做成可点的 &lt;a&gt;(微信 QQ 邮箱提醒纯文本 URL 常不可点)
      */
     protected function plainTextToHtmlEmailBody(string $text): string
     {
@@ -13503,13 +13500,42 @@ class Procuremen extends Backend
             if (preg_match('/<a\s+[^>]*href=/i', $line)) {
                 $out[] = $line;
             } else {
-                $out[] = htmlspecialchars($line, ENT_QUOTES, 'UTF-8');
+                $esc = htmlspecialchars($line, ENT_QUOTES, 'UTF-8');
+                $esc = preg_replace(
+                    '#(https?://[^\s<>"\']+)#iu',
+                    '<a href="$1" style="color:#1565c0;text-decoration:underline;word-break:break-all;">$1</a>',
+                    $esc
+                );
+                $out[] = $esc;
             }
         }
 
         return implode("<br>\n", $out);
     }
 
+    /**
+     * 邮件末尾追加「点击进入平台」按钮(微信内打开邮件更易点)
+     */
+    protected function appendPlatformTapLinkToEmailHtml(string $mailBody, string $platformUrl): string
+    {
+        $platformUrl = trim($platformUrl);
+        if ($platformUrl === '' || !preg_match('#^https?://#i', $platformUrl)) {
+            return $mailBody;
+        }
+        $esc = htmlspecialchars($platformUrl, ENT_QUOTES, 'UTF-8');
+        // 已有同 href 的按钮文案则不重复追加
+        if (strpos($mailBody, '点击进入平台处理') !== false) {
+            return $mailBody;
+        }
+        $mailBody .= '<br><br>'
+            . '<p style="margin:16px 0 8px 0;">'
+            . '<a href="' . $esc . '" style="display:inline-block;padding:10px 18px;background:#1a73e8;color:#ffffff;text-decoration:none;border-radius:4px;font-size:15px;">点击进入平台处理</a>'
+            . '</p>'
+            . '<p style="margin:0;font-size:12px;color:#888888;word-break:break-all;line-height:1.5;">若按钮无法打开,请复制到浏览器访问:<br>' . $esc . '</p>';
+
+        return $mailBody;
+    }
+
     /**
      * 短信场景:去掉链接类变量,避免误填 URL
      *