|
|
@@ -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:换行转 <br>,保留已替换进的 <a> 等标签
|
|
|
+ * 模版纯文本转邮件 HTML:换行转 <br>;http(s) 链接做成可点的 <a>(微信 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
|
|
|
*
|