如何发送邮件使换行符\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实体 代替普通空格,结果实体代码被原样输出:
function sendEmail() { MailApp.sendEmail({ to: "test@example.com", subject: "Test", body: "───────────────\n 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
相关产品推荐
相关产品推荐

