我如何拥有一系列电子邮件并确保它们都发送?

时间:2011-05-25 21:34:50

标签: php mysql email web-applications

我希望能够收到一系列电子邮件,并确保每封电子邮件都已发送。 (例如,数组>发送每封电子邮件>结果)我在这里改变了一个问题,因为这更重要,另外我添加了50个代表。点。 Codewise我该怎么做?

6 个答案:

答案 0 :(得分:2)

除了仍然使用mail()功能外,您可能还想设置 cron作业来发送邮件。对于假脱机邮件,发送作业使用单独的数据库表。或者,如果它是关于某种邮件列表功能,那么一个简单的收件人列表就可以了。

答案 1 :(得分:1)

同样的道理。您必须具有将电子邮件发送到电子邮件地址的代码。无论他们是否在网站上,都是相同的代码。您只需要知道他们的电子邮件地址。

编辑:如果您想知道如何触发要发送的电子邮件,可能您想使用cron作业安排它,例如每天午夜发送电子邮件。

答案 2 :(得分:1)

这说明了一切,真的:http://php.net/manual/en/function.mail.php

您只需安装外发邮件服务器(postfix,exim,sendmail)

答案 3 :(得分:1)

发送电子邮件的简便方法:

$to = "usermail@test.com";
$from = "my_email@mydomain.com";
$subject = "Hello!";
$contents = "This is an test mail!";

mail($to, $subject, $contents, "From: $from");

答案 4 :(得分:1)

如果您只想一次发送一堆相同的电子邮件,那么 可以在您的电子邮件数组上调用implode()将其转换为字符串:

$to_string = implode(', ', $to_array);

或者,如果你想尝试更复杂的东西,你可以使用 foreach循环遍历每封电子邮件并跟踪 成功与失败:

$success = array();
$failure = array();

foreach ($to_array as $to_email)
{
  if (mail($to_email, $subject, $message, ...))
    $success[] = $to_email;
  else
    $failure[] = $to_email;
}

我猜你的原始问题与发送所有这些有关 每天发送电子邮件或其他东西,而无需你打电话 按钮。如果您有ssh访问权限,请查看键入内容时会发生什么:

crontab -e

如果您遇到某种错误,则必须与您的系统通话 管理员关于cron。如果你得到一个文件,那么你可以使用cron。这个 但是,这不是你当前问题的一部分,所以我会离开它。

答案 5 :(得分:0)

如果您无法访问cron作业,那么您可能很难在没有用户交互的情况下运行。

处理此问题的一种常用方法是在每个第n页加载时运行,或者每隔一段时间运行一次。这仅适用于您想要发送电子邮件的网站。您还需要使用符合ACID标准的数据库。伪代码如下。

if (1 == rand(1,100)) { // run once every 100 page loads
    $emails = get_emails_to_send();
    mark_emails_as_sent($emails);
    $results = send_emails($emails);
    mark_failures_as_needing_to_be_sent($results);
}

或者,您可以在计时器上运行它:

if (time() - get_last_time_run() > $run_at_least_once_every_this_many_seconds) {
    $emails = get_emails_to_send();
    mark_emails_as_sent($emails);
    $results = send_emails($emails);
    mark_failures_as_needing_to_be_sent($results);
}

或者您可以将两者结合使用&&。这取决于您的网页被点击的频率。

如果您希望发送电子邮件的频率高于页面点击次数...太糟糕了;)。或者让外部服务经常调用页面。