Google Apps Script SendMail变量多行内容显示异常求助
问题原因与解决方案
根本原因
问题出在纯文本换行符与HTML换行标签混用,且邮件发送模式不匹配:
- 你的
ritmtodeploy变量里用了HTML换行标签<br/>,但拼接的message用的是纯文本换行符\n,而Google Apps Script默认发送的是纯文本邮件——纯文本模式下<br/>会被当成普通字符串,不会触发换行。 - 前几行看似正常,是因为每行内容较短,邮件客户端自动帮你换行了;第4行之后内容变长,客户端不再自动换行,就导致所有内容挤成一行。不存在所谓的行数限制,只是内容长度触发了客户端换行逻辑的差异。
修复方案
两种可选方案,选其一即可:
方案1:保持纯文本邮件格式
把ritmtodeploy里的<br/>全部替换成纯文本换行符\n,让整个邮件内容统一用纯文本规则换行:
// 替换HTML换行标签为纯文本换行 ritmtodeploy = ritmtodeploy.replace(/<br\/>/g, '\n'); var message = "Hello "+first_name+" there are "+numofreq+" requests that needs to be deployed:\n\n"+ritmtodeploy+" \nThanks"; // 发送纯文本邮件(默认模式) MailApp.sendEmail(recipient, subject, message);
方案2:改用HTML邮件格式
如果想保留更灵活的排版,发送邮件时指定htmlBody参数,同时把内容里的纯文本换行\n替换为HTML换行标签:
// 构建HTML格式的邮件内容 var htmlMessage = "Hello "+first_name+" there are "+numofreq+" requests that needs to be deployed:<br/><br/>"+ritmtodeploy+" <br/>Thanks"; // 发送HTML邮件,同时提供纯文本 fallback 兼容旧客户端 MailApp.sendEmail({ to: recipient, subject: subject, htmlBody: htmlMessage, body: message // 纯文本版本 });
内容的提问来源于stack exchange,提问作者antoin3
相关产品推荐
相关产品推荐

