Mailto:作为变量的主题

时间:2013-04-17 02:17:09

标签: javascript

**编辑:谢谢,Shivan Raptor!我有点忘了“encodeURIcomponent()”! **

出于某种原因,我正在制作一个Javascript书签,可以快速通过电子邮件发送我的两封电子邮件之一。 (我只是展示缩进的JS以使其更容易,因为我可以转换它。)它使用几个变量作为主题和正文,它们是通过提示输入的。

var address = confirm("School email?");

        var sub = prompt("What is the subject?");

        var bod = prompt("What would you like the message to read?");

        if(address == true) {
            window.location.assign("mailto:areiter@hightechhigh.org?Subject=sub&body=bod");
            alert("Message sent to 'areiter@hightechhigh.org'.");
        }
        else {
            window.location.assign("mailto:burningphantom13@gmail.com?Subject=sub&body=bod");
            alert("Message sent to 'areiter@hightechhigh.org'.");
        }

唯一的问题是变量“sub”和“bod”分别是主语和正文所显示的内容。所以代码打开了Outlook,并且有一封电子邮件准备好与主体中的“sub”和“bod”一起发送。有没有办法让Javascript代码的主题和正文成为变量的值?请记住,它将是一个书签,因此不能有任何HTML。

2 个答案:

答案 0 :(得分:3)

您可以替换:

window.location.assign("mailto:areiter@hightechhigh.org?Subject=sub&body=bod");

使用:

window.location.assign("mailto:areiter@hightechhigh.org?Subject=" + encodeURIComponent(sub) + "&body=" + encodeURIComponent(bod));

根据用户输入,变量subbod将是动态的。 encodeURIComponent对参数进行编码,因此如果用户输入特殊字符,则代码不会崩溃。

答案 1 :(得分:-1)

将代码更改为以下内容,

    var address = confirm("School email?");

    var sub = prompt("What is the subject?");

    var bod = prompt("What would you like the message to read?");

    if(address == true) {
        window.location.assign("mailto:areiter@hightechhigh.org?Subject=" + sub + "&body=" + bod);
        alert("Message sent to 'areiter@hightechhigh.org'.");
    }
    else {
        window.location.assign("mailto:burningphantom13@gmail.com?Subject=" + sub + "&body=" + bod);
        alert("Message sent to 'areiter@hightechhigh.org'.");
    }

希望这会奏效:)