使用Javascript发送邮件时自定义函数变量不识别该如何解决
问题原因
- 查询参数分隔符错误:
mailto协议的邮箱地址和第一个查询参数之间需要用?拼接,不同参数之间才用&拼接,你的代码直接用&拼接subject参数,导致整个参数结构失效,浏览器无法识别对应字段。 - 函数语法不完整:你提供的改造代码缺少末尾的闭合花括号
},会触发基础语法错误。 - 参数顺序不规范:JS规定无默认值的参数必须放在带默认值参数的前面,你将无默认值的
body放在两个带默认值的参数中间,调用时容易出现参数匹配错乱。
修正后代码
// 调整参数顺序,无默认值的body放在最前,带默认值的参数放末尾 function sendMail(body, subject = "test", mail = "test@gmail.com") { var link = `mailto:${mail}` // 第一个参数用?开头 + "?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body) ; window.location.href = link; }
调用示例
// 传body、自定义subject、自定义收件邮箱 sendMail("这是邮件正文", "这是自定义标题", "target@example.com"); // 只传body,用默认的subject和收件邮箱 sendMail("这是默认配置下的邮件正文");
内容的提问来源于stack exchange,提问作者OK 400
相关产品推荐
相关产品推荐

