【问题标题】:Send mass emails in php in sections? Stop spam? [closed]分段发送 php 中的群发电子邮件?停止垃圾邮件? [关闭]
【发布时间】:2013-11-05 06:33:15
【问题描述】:

所以,我在一个免费的网络主机 3owl.com 上运行。我知道免费主机与付费主机相比很糟糕,但它是暂时的。无论如何,我有 90 个用户需要向他们发送电子邮件。

问题:

I cannot send them at a speed of more than 1 every 4 seconds.

I must not run the while loop for more than 40 seconds at a time.

所以,我需要帮助弄清楚如何分段发送电子邮件。

Send email 1
4 second break
Send email 2
4 second break
Send email 3
4 second break
Send email 4
4 second break
Send email 5
4 second break
Send email 6
4 second break
Send email 7
4 second break
Send email 8
4 second break
Send email 9
4 second break
Send email 10
---------------
STOP SCRIPT in a way that doesnt load the website? for 10 seconds
---------------
continue with the next 10

这甚至可能吗? 也许是某种列出用户的复选框系统,您可以检查您希望将其通过电子邮件发送给谁......

这是我当前的代码

mail_users($_POST['subject'], $_POST['content']);

这个函数看起来像这样:

function mail_users($subject, $body) {
    $query = mysql_query("SELECT `email`, `first_name` FROM `users` WHERE `allow_email` = 1");
    while (($row = mysql_fetch_assoc($query)) !== false) {
        email($row['email'], $subject, "Hello ". $row['first_name'] . ",\n\n" . $body);
        sleep(4);
    }
}

我非常需要帮助。也许复选框需要一些javascript

【问题讨论】:

  • 您是否有理由需要在网页中使用代码来执行此操作?您是否考虑过将您的电子邮件列表导出到 Outlook 或 ConstantContact?
  • 你有 shell 访问权限吗?将 sendmail 替换为 qmail,您可以排队发送。它在我必须调节时间间隔内发送的消息数量的相同情况下对我有用。不是为了做广告,而是 Digital Ocean 以每月 5 美元的价格提供非常好的 Lampp 托管服务。

标签: php email spam massmail


【解决方案1】:

您还可以使用 JavaScript 和使用 Ajax 来调用发送邮件的 PHP。使用 setTimeOut 每四秒调用一次脚本,并通过查询字符串变量跟踪正在发送的电子邮件。

【讨论】:

    【解决方案2】:

    所以这就是我的做法(很长一段时间,我的网站拥有成千上万的用户)

    这完全是一个 hack,但它确实有效。

    构建一个发送单个电子邮件的页面,并在数据库中将该用户标记为“已发送”,例如 (sent=1)

    选择下一个未“发送”的用户(例如 sent=0)

    在页面上放一个元刷新标签,每分钟刷新一次,打开浏览器,启动页面,让它运行一个半小时甚至一整夜……

    上午,清空(设置所有用户发送=0)的db

    (我曾经让我的脚本运行一整夜......)

    【讨论】:

    • 请提供代码示例...
    • 在 head 标签内(这是在经典的 asp 中,因为这是网站的写法——告诉你这是很久以前的事了)<META http-equiv=refresh content="<% if request("wait")<>"" then response.write request("wait") else response.write "600" end if select case request("wf") case "newsletter" %>;URL=http://www.mydomain.com//newsletter_autosend.asp?test=<%=request("test")%>&resend=<%=request("resend")%>&newsid=<%=request("newsid")%>">
    • 我不知道为什么这个问题是题外话,或者我的解决方案被否决了。这是一个常见的编码问题——资源很少的企业家需要一种方法来编写适合其预算限制的代码。我在构建 LandAndFarm.com 时遇到了完全相同的问题。我使用的是具有免费商业模式的有限托管服务,但我找到了一个效果很好的解决方案。我在页面上发送了一封电子邮件,然后等待并重新加载页面。该页面受密码保护,因此只有我可以访问它。确实有一段时间我确实以这种方式发送了数以万计的时事通讯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2012-05-27
    • 2012-09-04
    • 1970-01-01
    • 2012-12-06
    • 2010-10-19
    相关资源
    最近更新 更多