C#发送邮件时textarea输入内容换行符丢失问题求助
问题根因
你在代码中设置了msgObj.IsBodyHtml = true,邮件会以HTML格式渲染,而textarea输入的换行符为\n,HTML规范不会将普通换行符识别为换行标记,只会解析为空格,因此收件方看不到换行效果。
解决方案
方案1:保留HTML邮件格式(适配后续富文本需求)
在赋值邮件正文前,将所有换行符替换为HTML换行标签<br/>,修改C#代码中Button1_Click方法的对应部分:
string YourMessageBody = MailBody.Value; // 新增下面这行,兼容不同系统的换行符 YourMessageBody = YourMessageBody.Replace("\r\n", "<br/>").Replace("\n", "<br/>");
方案2:无需HTML格式可直接关闭HTML模式
如果不需要在邮件中使用富文本样式,直接将代码中的msgObj.IsBodyHtml = true;修改为msgObj.IsBodyHtml = false;即可,纯文本邮件会自动识别\n换行符,无需额外处理。
前端预览修复
你现有JS中的换行替换逻辑不生效,因为replace方法返回新字符串但没有赋值回元素,修改changeBody函数即可让预览正常显示换行:
function changeBody(val) { document.getElementById("MailbodyContent").innerHTML = val.replace(/\n/g, '<br>'); }
内容的提问来源于stack exchange,提问作者Pelle Nilsen
相关产品推荐
相关产品推荐

