如何格式化mailto函数中的文本

时间:2015-07-27 22:24:44

标签: javascript arrays object mailto

我有两个数组和一个对象。一个数组包含产品代码,另一个包含其数量。例如,quantity数组中的第一个数量是产品代码数组中第一个产品代码的数量。我还有一个包含客户数据的对象。它看起来像这样:

customer={
name:' firstname lastname',
email: 'example@domain.com',
company: "company name",
phone_number: 'phone number',
}

数组看起来像这样:

product_codes=[code_1; code_2; code_3];
quantities=[23, 56, 45];

假设所有这些都邮寄给customersupport@example.com。

我熟悉mailto函数的基础知识,但我想知道是否有办法格式化电子邮件的正文,使其看起来像这样:

...................................

名称:customer.name

电子邮件:customer.email

公司名称:customer.company

电话号码:customer.phone_number

产品代码1:对应数量

产品代码2:对应数量

产品代码3:对应数量

...............................................

我还希望能够添加任何其他给定的代码和数量,因为我不确定会有多少。这甚至可能吗?如果是这样,怎么样?请解释一下,我不仅可以使用它,还可以理解它是如何工作的。谢谢!

如果我不够清楚,请告诉我,以便我可以更清晰地编辑它。

3 个答案:

答案 0 :(得分:1)

我会在函数中构建字符串:

HTML:

<a href="#" id="thelink">Click to Email</a>

JAVASCRIPT:

//stuff you specified...
var customer={
  name:' firstname lastname',
  email: 'example@domain.com',
  company: "company name",
  phone_number: 'phone number',
}
var product_codes=['alpha', 'beta', 'gamma'];
var quantities=[23, 56, 45];

/* Assign a click action onto the link */
var yourLink = document.getElementById("thelink");
yourLink.onclick = function() {
   var elf = "%0A"; //Encoded Line Feed
   mailtoBody = "Name: " + customer.name + elf
              + "Email: " + customer.email + elf
              + "Company Name: " + customer.company + elf
              + "Phone Number: " + customer.phone_number + elf;
   for (var i=0; i < product_codes.length; i++) {
        mailtoBody += product_codes[i] + ": " + quantities[i] + elf;
   }
   location.href = "mailto:you@example.com?body=" + mailtoBody;
}

这是一个有效的例子: http://jsbin.com/kigutuhiqa/edit?html,js,output

答案 1 :(得分:1)

var sendEmail = function() {

  var customer, body, quantities, product_codes;    

  customer = {
    name: 'First Last',
    email: 'example@example.com',
    company: 'Company',
    phone_number: 'phone number',
  }

  body =  'Name: '+ customer.name;
  body += '\nEmail: '+ customer.email;
  body += '\nCompany: '+ customer.company;
  body += '\nPhone Number: '+ customer.phone_number;

  product_codes = ['code_1', 'code_2', 'code_3'];
  quantities = [23, 56, 45];

  for(var i = 0; i < product_codes.length; i += 1) {
    body += '\nProduct Code '+ product_codes[i] +': '+ quantities[i];
  }

  subject = 'Your Subject';

  window.location = 'mailto:customersupport@example.com?body='+ encodeURIComponent(body) +'&subject='+ encodeURIComponent(subject);

};

// execute this function when the user clicks the #send-email button
var button = document.getElementById('send-email');
button.addEventListener('click', sendEmail);

This is how the email will look like

答案 2 :(得分:0)

听起来我想要构建一个消息体。如果是这种情况,您可以创建一个功能,通过接收您提到的3个对象来构建邮件正文:客户,代码和数量。

例如,您可以执行类似

的操作
function buildBody(cust, codes, quant){
    var body = "";

    body += "Name: " + cust.name + "\n";
    body += "Email: " + cust.email + "\n";
    body += "Company Name: " + cust.companyname + "\n";

    for(var i=0; i<codes.length; ++i)
        body += "Product Code " + codes[i] + ": " quant[i] + "\n";

    return body;
}

我没有测试过这段代码,但希望你能得到这个想法。