邮箱签名生成器

填好姓名、职位、公司、电话、邮箱、网址和地址,这个邮箱签名生成器同时吐出两套签名:一套只含内联样式的 HTML 表格源码,一套每行不超过 78 字符的纯文本。生成时会报出 HTML 字节数与占 Gmail 剪裁阈值的比例,并当场预览渲染效果。

HTML 源码字节数836 B
占 Gmail 剪裁阈值0.82%
纯文本最长行26 字符
HTML / 纯文本体积比4.83×
张伟 产品经理
柳泉科技
手机:+86 138 0000 0000
邮箱:zhangwei@example.com
网址:https://www.example.com
地址:北京市海淀区中关村大街 1 号
默认示例的 HTML 源码是 836 字节,占 Gmail 102005 字节剪裁阈值的 0.82%;纯文本版最长一行 26 个字符,远低于 78 字符的建议上限。任一输入框里按 Enter 即可重新生成。
邮箱客户端渲染引擎<style> 标签flex / gridbackground-image内联 base64 图片签名建议
Gmail 网页版自定义剥离部分支持拦截不支持只用内联样式与表格
Gmail App(Android / iOS)自定义剥离不支持拦截不支持版式越简单越稳
Apple Mail(macOS / iOS)WebKit保留支持支持支持能显示,但别只迁就它
Outlook 365 / 2019(Windows)Microsoft Word剥离不支持不支持不支持必须用 table + 内联样式
Outlook 新版(Windows)Chromium保留支持支持部分拦截新版宽,旧版仍要兼容
Outlook for MacWebKit保留支持支持支持接近 Apple Mail 的表现
Outlook.com(网页版)自定义剥离不支持拦截不支持同桌面旧版口径
QQ 邮箱(网页版)WebKit保留支持部分拦截拦截内联样式最稳
网易 163 邮箱WebKit保留支持部分拦截拦截避免外链图与底图
Foxmail 桌面版IE 内核 / WebKit剥离不支持不支持不支持按老 IE 口径写
Samsung MailAndroid WebView保留支持支持部分拦截基本跟随系统内核
ThunderbirdGecko保留支持支持支持兼容性最好的一个

「加载更多行」补上企业邮箱与移动端的几个客户端;「导出 CSV」把这张兼容表存成带 BOM 的文件。

使用方法

  1. 填「姓名」,这是唯一必填项,默认 张伟。留空会被拦下并提示——一个没有署名的签名没有意义。
  2. 填职位、公司、电话。默认分别是 产品经理、柳泉科技、+86 138 0000 0000。这三项留空时会整行省略,不会留下一个孤零零的标签。
  3. 填「邮箱」,默认 zhangwei@example.com。格式不对会被拦下,提示缺的是 @ 还是域名后缀。
  4. 填「网址」,默认 https://www.example.com。必须以 http:// 或 https:// 开头,否则邮箱客户端会把它当相对路径,点开就是 404。
  5. 填地址,默认 北京市海淀区中关村大街 1 号。地址过长时纯文本版会自动换行,不用手动插回车。
  6. 点「生成签名」或在任一输入框里按 Enter。预览区立刻显示渲染效果,四格统计同时更新。
  7. 「复制 HTML」拿到的是完整表格源码,「复制纯文本」拿到的是每行不超过 78 字符的版本。两套都贴进邮箱签名设置里,客户端会自动按 MIME 的 multipart/alternative 选择该显示哪一套。

邮箱签名生成器能解决什么问题

一是让签名在所有客户端里长得一样。同一个签名在 Apple Mail 里排版正常、到了 Windows 版 Outlook 就散架,是因为后者用 Microsoft Word 的渲染引擎,不认 flex、grid,也不认 background-image。本页生成的 HTML 只用 <table> 加内联样式,这套写法在 Word 引擎下也能立住。

二是避免「签名字一多就被 Gmail 折叠」。Gmail 对 HTML 源码超过 102,005 字节的邮件会从下往上剪裁,把底部内容藏进「查看整封邮件」。一封邮件里有整个公司地址、社交链接、免责声明的长签名,很容易踩线。本页实时报出字节数,默认示例只占 0.82%。

三是同时交付 HTML 与纯文本两套。有些客户端或有些收件人设置了「只看纯文本」,这时如果只给了 HTML,签名会变成一团标签。两边都提供,收件人看到的才是干净的署名。

四是防止邮箱被当成链接文本漏掉。纯文本签名里的邮箱地址很多客户端不会自动识别,用户得手动复制。本页的 HTML 版把邮箱和网址包进 mailto: 与完整 https:// 链接,可点击率明显不同。

本页不做的事:它不生成签名里的 Logo 图片,也不做社交图标——那需要外链图片或 base64,而 base64 内联图片会让体积膨胀三分之一以上,还常被客户端拦截。想要 Logo 请用图床外链,或干脆只用文字。要把已有 HTML 签名还原成纯文本,用 HTML转纯文本转换器更方便。

原理:内联样式、表格布局与 102005 字节剪裁线

生成过程只有两步:转义、拼接。先把每个字段逐个过 escapeHtml():& 换成 &amp;、< 换成 &lt;、> 换成 &gt;、" 换成 &quot;。不转义的后果很具体:名叫「李&王」的人会让整个签名表格解析错位,而 <script> 风格的字段则可能被部分客户端当成标签执行。转义之后按固定模板拼成 <table> 结构,行与行之间用 \r\n 连接,因为 RFC 5322 规定行分隔是 CRLF。

为什么必须用 table 而不是 div。Word 渲染引擎把 HTML 当成一份 Word 文档来排版,只认一小撮 1990 年代的标签和属性,盒模型、flex、grid 全都不支持。而 <table> 的 cellpadding、cellspacing、border 这三个属性从 HTML 4 起就没变过,是唯一跨客户端都成立的布局原语。所以本页的骨架是「一个 table、每个字段一行 tr、每行的内容放在 td 里」,间距靠 padding 而不是 margin——Word 引擎对 margin 的支持同样残缺。

为什么不能用 <style> 标签。Gmail 网页版、Gmail App、Outlook 桌面旧版、Outlook.com、Foxmail 都会把 <style> 里的规则整块剥离,只保留元素上的 style 属性。这意味着写在 <style> 里的 .sig-name { font-size: 16px } 在这几个客户端里等于没写。本页因此把每一条样式都直接写在元素上,代价是源码变长——默认示例 836 字节里,样式属性占了大约三分之二。

102,005 字节是硬阈值,而且算的是压缩后的 HTML 源码。Gmail 对源码超过这个值的邮件从底部开始剪裁,被剪掉的部分只在「查看整封邮件」链接后面。它数的是 HTML 与内联资源,外链图片不算在内,所以「把图片放外链」既能省体积又不会被拦。另一个常见放大项是 base64 内联图片:base64 把每 3 字节编码成 4 个字符,体积固定膨胀 33.33%,一张 100 KB 的图编码后约 133.3 KB,单它一张就超过整个阈值。

78 字符是纯文本行的经验上限。RFC 5322 §2.1.1 规定邮件每行 MUST 不超过 998 字符、SHOULD 不超过 78 字符(均不含 CRLF)。998 是很多实现真正会拒收的硬线,78 是为了迁就那些显示宽度窄的客户端——超过 78 个字符的行可能被截断或被丑陋地折行。本页的纯文本版逐行检查,默认示例最长一行 26 个字符,离上限还有很大余量。

完整示例(数值仅作演示)

页面打开时的默认字段是:姓名 张伟、职位 产品经理、公司 柳泉科技、电话 +86 138 0000 0000、邮箱 zhangwei@example.com、网址 https://www.example.com、地址 北京市海淀区中关村大街 1 号。下面是这套字段生成的两套签名。

  • HTML 源码共 836 字节、8 行,占 Gmail 102,005 字节阈值的 0.82%,剩余空间 101,169 字节;
  • 这份 HTML 里没有 <style> 标签、没有 display:flex 或 display:grid、没有 base64 内联图片,三条都能通过上面那张兼容表;
  • 纯文本版共 6 行、173 字节,最长一行是「网址:https://www.example.com」,26 个字符,低于 78 字符的建议线;
  • HTML 与纯文本的体积比是 4.83 倍——这个倍数意味着纯文本版几乎不可能触发剪裁;
  • 转义示例:字段里出现 & 会变成 5 个字节的 &amp;,< 与 > 各变成 4 字节的 &lt; 与 &gt;," 变成 6 字节的 &quot;;
  • 若把一张 100 KB 的 Logo 转成 base64 内联进去,体积会变成约 133.3 KB,是阈值的 134%,必定被 Gmail 剪裁。

再看一个长度边界的例子:姓名填满 30 个汉字,UTF-8 下是 90 字节;地址填满 60 个汉字是 180 字节。即使所有字段都填到 maxlength 上限,HTML 源码仍在 3 KB 以内,离 102,005 字节的阈值有三十倍的安全距离。真正会把签名撑爆的是图片,不是文字。

输入范围与客户端兼容对照表

下表把常见邮箱客户端按渲染引擎分组,标出它对四类写法的支持情况。这张表决定了本页为什么选择内联样式加表格:只要有客户端会在某一列打叉,这套写法就不能用。

邮箱客户端渲染引擎<style> 标签flex / gridbackground-image内联 base64 图片签名建议
Gmail 网页版自定义剥离部分支持拦截不支持只用内联样式与表格
Gmail App(Android / iOS)自定义剥离不支持拦截不支持版式越简单越稳
Apple Mail(macOS / iOS)WebKit保留支持支持支持能显示,但别只迁就它
Outlook 365 / 2019(Windows)Microsoft Word剥离不支持不支持不支持必须用 table + 内联样式
Outlook 新版(Windows)Chromium保留支持支持部分拦截新版宽,旧版仍要兼容
Outlook for MacWebKit保留支持支持支持接近 Apple Mail 的表现
Outlook.com(网页版)自定义剥离不支持拦截不支持同桌面旧版口径
QQ 邮箱(网页版)WebKit保留支持部分拦截拦截内联样式最稳
网易 163 邮箱WebKit保留支持部分拦截拦截避免外链图与底图
Foxmail 桌面版IE 内核 / WebKit剥离不支持不支持不支持按老 IE 口径写
Samsung MailAndroid WebView保留支持支持部分拦截基本跟随系统内核
ThunderbirdGecko保留支持支持支持兼容性最好的一个

再看长度与体积的对照。文字字段即便全部填满,体积也远低于剪裁线;真正的风险来自图片。

内容典型体积占 102,005 字节阈值结论
默认示例 HTML 签名836 B0.82%安全
全部字段填满上限的 HTML 签名≈2.8 KB≈2.8%安全
一张 100 KB 的 Logo 转 base64≈133.3 KB134%必定被剪裁
外链 Logo(仅一行 <img>)≈120 B0.12%安全,且不进源码计数

输入范围、边界与精度说明

  • 姓名限 30 个字符、必填。邮箱签名里出现超过 30 字的姓名通常意味着填错了字段(把抬头写进了姓名)。留空时本页会拦下,而不是生成一个没有署名的模板。
  • 职位与公司各限 40 字、可空。留空时整行省略,不会残留一个「职位:」的空标签。这是刻意的:空标签在 Word 引擎下会撑出一个多余的行高。
  • 电话限 30 字,不强制数字格式。因为 +86 138 0000 0000、(010) 8888 6666、138-0000-0000 都是合法写法,强行只留数字反而会丢信息。本页只在电话里出现 < 或 > 这类会破坏 HTML 的字符时会转义处理。
  • 邮箱必须匹配 ^[^\s@]+@[^\s@]+\.[^\s@]{2,}$。这是简化规则,不覆盖 RFC 5322 的完整文法(引号本地部分、IP 字面量、注释这些写法都会被拒)。对本页足够:签名里的邮箱写规范一点没有坏处。
  • 网址必须以 http:// 或 https:// 开头。只写 www.example.com 时,很多客户端会把它当相对链接,在邮件里点开就是 404。这个邮箱签名生成器直接拦下并给出补全建议。
  • 地址限 60 字。超过这个长度纯文本版会自动折行,HTML 版则交给 td 的宽度自动换行。两套都不裁字。
  • HTML 源码字节数按 UTF-8 统计。一个汉字 3 字节,一个 ASCII 字符 1 字节,所以「同一段文字」在中文和英文下的字节数差三倍。计数用的是编码后的字节数,不是字符数——因为 Gmail 阈值是按字节算的。
  • 本页刻意不做的近似。不插入追踪像素(那会引入外链请求与隐私问题)、不做社交图标(需要外链图片)、不生成 vCard 附件(multipart/alternative 里再挂附件会让结构复杂化)。

常见问题

为什么复制到 Outlook 里格式全乱了?

因为 Windows 版 Outlook 用的是 Microsoft Word 的渲染引擎,不是浏览器内核。它不认 flex、grid、background-image,也会把 <style> 块剥掉。本页的邮箱签名生成器从一开始就只用 <table> 加内联 style 属性,这两样从 HTML 4 起就没变过,是 Word 引擎唯一稳定支持的组合。

为什么建议同时保留纯文本版?

因为收件人的客户端会自己选。邮件按 MIME 的 multipart/alternative 结构发送时,同一个签名会带 HTML 和纯文本两份,客户端挑它能显示的那份。如果只有 HTML,遇到「只看纯文本」的设置或老客户端,你的签名就会变成一堆尖括号标签。两份都填,是成本最低的保险。

78 字符这个数字是从哪来的?

来自 RFC 5322 §2.1.1。规范里写了两条:每行 MUST 不超过 998 字符,SHOULD 不超过 78 字符,都不含行尾的 CRLF。998 是很多邮件实现的硬上限,超了可能被拒收或截断;78 是更保守的建议值,专门照顾显示宽度窄的客户端。本页按 78 检查,因为纯文本签名本来就不该有很长的行。

签名里能不能放公司 Logo?

能,但要放外链地址,不要转成 base64 内联。原因有两个:base64 会让体积膨胀 33.33%,一张 100 KB 的图编码后约 133.3 KB,单它一张就超过 Gmail 的 102,005 字节剪裁线;而且 Gmail、QQ 邮箱、163 邮箱都可能拦掉内联图片,收件人只看到一个红叉。外链图片不计入 HTML 源码体积,是更稳的做法。

为什么必须填姓名,其他字段却可以空着?

因为签名的唯一职能就是告诉收件人「这封邮件是谁发的」。没有姓名的签名在中文商务邮件里几乎无法辨认身份。反过来,职位、公司、电话、地址都可能是刻意不公开的(比如自由职业者或内部邮件),所以它们留空时本页只做省略处理,不报错。

「HTML / 纯文本体积比 4.83 倍」说明什么?

说明 HTML 版的信息冗余度高——同样的内容,为了跨客户端兼容,每条样式都要重复写在元素上,标签也要成对出现。这个倍数本身不危险,因为两者都远低于任何阈值。它的用处是提醒你:如果哪天 HTML 版体积涨得很快,多半不是文字变多,而是有人往里塞了图片或大量重复的内联样式。

复制粘贴时选「保留源格式」还是「纯文本」?

看你贴到哪里。贴进邮箱客户端的「签名」设置里通常要保留源格式(HTML 视图),这时用「复制 HTML」;贴进纯文本的签名档或工单系统,用「复制纯文本」。如果只有 HTML 源码又必须变成纯文本,可以先贴进编辑器再另存为纯文本,或者用 HTML转纯文本转换器处理。

字段里出现特殊符号会怎样?

会被转义,不会破坏结构。比如姓名写「A&B」,输出里是「A&amp;B」,渲染出来仍然是「A&B」。四类字符会转义:&、<、>、"。不转义的后果很具体——名为「李<王」的人会让整个表格的标签错位,签名直接散架。

相关工具

  • HTML转纯文本转换器:把已有 HTML 签名还原成干净的纯文本,去标签、解实体。
  • 字符数统计工具:按码点、UTF-16 码元、UTF-8 字节三个口径量长度,核对 78 字符与字节阈值时用得上。
  • Base64图片编码:看清内联图片膨胀 33.33% 的过程,理解为什么签名不该用它。
  • 标题标签长度检测:同样是「按客户端上限卡长度」的思路,只是对象换成了搜索结果标题。
  • 简介生成器:面向个人主页的自我介绍文案,和邮箱签名是同一类「短身份文本」。
  • Instagram简介生成器:社媒简介的字符上限与换行规则又是另一套,可以对照看。
  • SEO与营销:查看全部 SEO 与营销工具。