检测收件人在PHP mail()函数中形成多个收件人

时间:2014-04-14 17:15:57

标签: php

我有一个php mail()函数的问题, 我有6000个邮件列表的邮件地址。我希望在发送电子邮件时检测单个收件人地址,我想为unsubscrive创建一个链接

例如:

<a href="delete.php?email=sample@test.com>unsubscribe</a>"

php代码:

$dests = array("a@mail.com", "b@mail.com", ...); //over 6000 items dinamically sets
$subj = "something";
$body = "something"
. '<a href="delete.php?email=EMAIL_OF_RECIPIENT>unsubscribe</a>"';
$headers = "something";
mail($dests, $subj, $body, $headers);

一个想法是:

foreach($dests as $dest){
$subj = "something";
$body = "something"
. '<a href="delete.php?email=dest>unsubscrive</a>"';
$headers = "something";
mail($dest, $subj, $body, $headers);
}

但对于超过100位收件人来说,这是一个萌芽的想法。

有些解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

为什么这是一个坏主意?性能我假设。发送6000封电子邮件需要一段时间(我希望这是某种背景/异步动作)。您甚至可能故意错开它以使您的邮件服务器/ ISP更好。或者为此脚本设置比其他脚本更长的最长执行时间。

一个小的改进是尽可能多地移出循环。这样做(并清理你的代码工作 - $ on变量,unsubscribe链接的完整URL和交换单引号和双引号,以便解释内联变量):

$subj = "something";
$body = "something";
$headers = "something";
foreach($dests as $dest){    
  mail($dest, $subj, $body . "<a href='http://example.com/delete.php?email=$dest'>unsubscrive</a>", $headers);
}