You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP发送邮件时@font-face设置无效,如何修改邮件字体?

PHP邮件自定义字体不生效的解决方法

多数邮件客户端(如Gmail、Outlook)会限制加载外部Web字体,或者完全不支持通过@font-face引用外部URL的字体文件,这就是你设置的自定义字体不生效,但颜色、背景等样式正常的原因。下面是两种可行的解决方案:

方案1:将字体转为Base64嵌入样式

把字体文件编码为Base64后直接嵌入到邮件的CSS中,不需要依赖外部资源,兼容性更好:

  1. 将IRANSansWeb.ttf文件通过Base64编码工具转换为编码字符串
  2. 修改@font-face中的src为data URI格式

修改后的邮件内容代码示例:

$message = '<!DOCTYPE html> <html lang="fa"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style type="text/css"> @font-face { font-family: iran; src: url(data:font/truetype;base64,替换为你的字体Base64编码内容) format("truetype"); } body { font-family: iran; } </style> </head> <body> <div style="font-family: iran;background: red; color: white"> <p>سلام</p> </div> </body> </html>';

方案2:使用系统预装字体作为降级方案

如果不想嵌入字体,可以优先指定用户系统中已有的波斯语字体作为 fallback,保证显示效果:

body { font-family: iran, "IRANSans", "B Yekan", Tahoma, sans-serif; }

当自定义字体无法加载时,客户端会自动选用列表中第一个存在的系统字体。

额外注意事项

  • 邮件客户端对CSS支持有限,尽量优先使用内联样式,减少对头部样式的依赖
  • 部分客户端(如Outlook Windows版)对@font-face支持极差,这种情况下只能依赖系统预装字体

内容的提问来源于stack exchange,提问作者kamksa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:10:12