【问题标题】:mailto: add users dynamically to same emailmailto:将用户动态添加到同一电子邮件中
【发布时间】:2014-09-08 11:10:05
【问题描述】:

假设我有一个要发送电子邮件的用户列表。 mailto: 让我打开电子邮件并插入他们的电子邮件地址。我希望这是动态的。

mailto:1@1.com

mailto:2@2.com

mailto:3@3.com

mailto:4@4.com

示例:我单击用户 1 和 4 并发送并通过电子邮件发送出去。下一次,我点击 2 和 3 并发送另一封电子邮件。

问题:现在,每次我点击用户时,都会打开一个新窗口。我将向 1 和 4 的用户发送单独的电子邮件。我必须使用什么功能,这样每次单击电子邮件时它都不会打开新的电子邮件窗口。如果我单击所有用户 1 到 4,我希望所有 4 个电子邮件地址都在同一个窗口中,因此我向所有 4 个用户发送 1 封电子邮件。反之亦然。

【问题讨论】:

  • 你可以用 Javascript 来做。而且这里不需要 PHP。

标签: javascript php jquery email


【解决方案1】:

您可以使用 Javascript 或 Jquery 来检测点击,阻止默认操作,然后将它们编译成一个列表。然后必须使用第二个按钮来触发操作。

<a href='1@1.com' class='mailto'>User 1</a>
<a href='2@2.com' class='mailto'>User 2</a>
<a href='mailto:' id='combined' style='display: none;'></a>
<input type='button' value='Send' id='send'>

<script>
$('.mailto').click(function(e){
    e.preventDefault();
    $('#combined').attr('href',$('#combined').attr('href') + $(this).attr('href') + ';');
});
$('#send').click(function(e) {
    $('#combined')[0].click();
});

</script>

查看示例:http://jsfiddle.net/evVR8/2

您可能还希望有一个清除按钮,可以将#combined 的 href 返回到“mailto:”

编辑 - 更新 jsfiddle 以清晰显示当前选择的用户列表。

您也可以结合使用此答案和@Brad-Christie 的答案,这样他们就可以简单地使用复选框,以便更轻松地查看您要发送给谁。但不要使用window.location.replace,而是使用隐藏链接并单击触发器。

【讨论】:

  • 非常好。有没有办法根据点击自动插入电子邮件而没有发送按钮?或者我应该使用除了mailto之外的其他东西:对于这种问题
  • 不,因为它需要知道您何时真正想要发送而不是向列表中添加另一个电子邮件地址。
  • 是的,我认为您可以修改链接。如果不只是使用$(this).attr('href').substring(7)
  • 我将如何修改它以获得一定的限制。假设有 20 个收件人。
  • 您必须添加一个计数器,该计数器每次单击都会增加一次,然后在您点击清除时设置回 0。
【解决方案2】:

虽然通过mailto: 协议有no regulated way to send emails to multiple recipients,但您可以引入一种使用复选框(或其他方式)来模仿它的格式。但是,如前所述,不能保证它会起作用:

<label>
  <input type="checkbox" name="to" value="1@1.com">1@1.com
</label>
<label>
  <input type="checkbox" name="to" value="2@2.com">2@2.com
</label>
<label>
  <input type="checkbox" name="to" value="3@3.com">3@3.com
</label>
<label>
  <input type="checkbox" name="to" value="4@4.com">4@4.com
</label>
<input type="button" value="Send Email" id="send-email" />

为了简单起见,在这里使用一些 jQuery:

$('#send-email').on('click', function(e){
  var to = [];
  $('input[name="to"]:checked').each(function(){
    to.push($(this).val());
  });
  window.location.replace('mailto:' + to.join(','));
  e.preventDefault();
  return false;
});

Example of the above

但是,您最好在send the email 的后端使用 PHP,因为它可以(并且将)优雅且一致地处理多个收件人。

【讨论】:

    【解决方案3】:

    请查看this link

    当您知道如何添加多个收件人时,只需将字符串与地址连接起来,或者使用复选框添加简单的 javascript

    【讨论】:

      猜你喜欢
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      相关资源
      最近更新 更多