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

如何发送邮件使换行符\n后仅显示一个半角空格?

问题

使用Google Apps Script的MailApp.sendEmail发送纯文本邮件时,在换行符\n后添加1个半角空格,邮件正文里该位置会显示2个半角空格。

脚本示例

function sendEmail() {
  MailApp.sendEmail({
    to: "test@example.com",
    subject: "Test",
    body: "───────────────\n Hello, world!", // 此处仅输入1个半角空格
  });
}

实际执行结果

───────────────
Hello, world! <- 开头显示2个半角空格

尝试过的无效操作

用HTML实体&nbsp;代替普通空格,结果实体代码被原样输出:

function sendEmail() {
  MailApp.sendEmail({
    to: "test@example.com",
    subject: "Test",
    body: "───────────────\n&nbsp;Hello, world!",
  });
}

执行结果:

───────────────
 Hello, world! <- HTML实体未被解析

期望效果

换行符\n后仅显示1个半角空格。


解决方案

这是因为纯文本邮件的格式处理会受邮件客户端影响,部分客户端会自动给换行后的内容添加缩进,导致额外空格。推荐以下两种解决方式:

1. 使用HTML格式发送邮件

切换为HTML格式可以精确控制文本显示,用<br>代替\n实现换行,空格保留正常半角即可:

function sendEmail() {
  MailApp.sendEmail({
    to: "test@example.com",
    subject: "Test",
    htmlBody: "───────────────<br> Hello, world!",
  });
}

如果需要兼容纯文本客户端,可以同时指定body和htmlBody,客户端会优先显示HTML版本:

function sendEmail() {
  MailApp.sendEmail({
    to: "test@example.com",
    subject: "Test",
    body: "───────────────\n Hello, world!", // 纯文本兼容 fallback
    htmlBody: "───────────────<br> Hello, world!",
  });
}

2. 纯文本下使用不间断空格转义字符

如果必须用纯文本格式,可以将空格替换为Unicode不间断空格的转义字符\u00A0,避免客户端自动添加空格:

function sendEmail() {
  MailApp.sendEmail({
    to: "test@example.com",
    subject: "Test",
    body: "───────────────\n\u00A0Hello, world!",
  });
}

内容的提问来源于stack exchange,提问作者Yo Poppin Ka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:35:10