链接在邮件正文中被删除

时间:2017-02-28 10:09:51

标签: javascript hyperlink

我有一个javascript代码,用于生成包含正文链接的电子邮件。

某些链接在链接中有空格,因此链接会被删除。

enter image description here

我尝试用asacii代码替换空格,但它没有用。

var lineBreak = "%0D%0A";

function GetMailToInfo(attachment, body) {

    attachment = attachment ? attachment.replace(" ","%0D%0A") + lineBreak + lineBreak : "";
    body += attachment + signature;
    window.location.href = "mailto:" + emailTo + "?subject=" + subject() + "&body=" + body;
}

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您的问题很可能是因为String.replace仅在使用string作为第一个参数时替换了第一个匹配项。请参阅this MDN documentation

我建议循环播放:

while (attachment.indexOf(" ") >= 0) {
    attachment = attachment.replace(" ", "%0A%0D");
}

或使用RegEx执行基于模式的替换。

但是,Quentin的解决方案是编写字符串以便安全使用URI的正确方法。我的答案是针对更一般的情况,它可能不是URI字符串。

答案 1 :(得分:1)

使用encodeURIComponent正确转义网址中的特殊字符:

window.location.href = 
    "mailto:"   + encodeURIComponent(emailTo) + 
    "?subject=" + encodeURIComponent(subject()) + 
    "&body="    + encodeURIComponent(body);