在一个电子邮件中包含一些电子邮件

时间:2012-04-22 11:03:14

标签: php mysql include cron send

我有一个分类广告网站,我正在制作一个mod,当广告发布在该类别和他们订阅的城市时,它将邮寄我的用户。现在,我有一个问题。我已经将此文件设置为每天使用cronjob运行一次。在一天内,我的网站每天发布50个广告,因此用户每天可以收到50封电子邮件。我想在一个电子邮件中包含所有50封电子邮件,因此用户将收到1封电子邮件,但我不知道该怎么做。 例如:每封电子邮件都有一个链接,50封电子邮件有50个链接。我希望用户只收到一封电子邮件,其中包含所有50个链接。 我尝试了很多方法,但我做不到。 每个建议都受到欢迎。

由于

3 个答案:

答案 0 :(得分:0)

这段代码太糟糕了,不能改变它,编写新代码要简单得多。我建议你创建数组并将电子邮件的信息放到它而不是立即发送。如果阵列已包含具有相同电子邮件的项目,请不要添加新电子邮件,而是向现有电子邮件添加信息。获取所有电子邮件后,迭代新数组并发送电子邮件。

答案 1 :(得分:0)

由于您已经为脚本运行了cronjob,只需设置一个合适的时间(清晨或傍晚)并查询您存储分类中的帖子的数据库,选择最后发布的50个,将它们添加到电子邮件中并将它们发送给注册用户以接收最新发布的电子邮件。看起来很直接,除非我误解了什么。

另外,我很好奇为什么(在上面的脚本中)你在每一小段代码之后跳进PHP。这非常令人分心,坦率地说我甚至不想阅读代码。从上面显示的内容中没有理由离开PHP - 除非这些都是你在这里显示的所有小片段。如果是这样的话,请忽略我的抱怨。

<?php } ?>
<?php } ?>
<?php } ?>
<?php } ?>
<?php } ?>
<?php } ?>

/ scratcheshead

答案 2 :(得分:0)

只需将您的广告信息收集到一个数组中,然后将电子邮件设置为array-key。

$recipients = array();
while ($row = mysql_fetch_assoc($result)) {
  $email = $row["email"];
  if (!array_key_exists($email, $recipients)) {
    $recipients[$email] = array();
  }
  $recipients[$email][] = $row;
}

在此之后,您有一个数组,每封电子邮件都有可变数量的$ row-entries。您只需使用foreach循环将这些条目添加到邮件模板中。