使用 PHP 根据日期发送定期电子邮件


Send recurring email based on date using PHP

我不确定从哪里开始设置自动重复电子邮件提醒应用程序。我目前有一个将数据插入 msyql 数据库的表单。

<form method="post" action="save.php">
<p>
    <label for="name">Full Name</label><br />
    <input type="text" name="name" data-h5-errorid="error-name" required />
    <span id="error-name" class="error">Please enter a full name</span>
</p>
<p>
    <label for="address">Address (Street Address Only)</label><br />
    <input type="text" name="address" data-h5-errorid="error-address" required />
    <span id="error-address" class="error">Please enter an address</span>
</p>
<p>
    <label for="email">Email</label><br />
    <input type="email" name="email" data-h5-errorid="error-email" required />
    <span id="error-email" class="error">Please enter a valid email address</span>
</p>
<p>
    <label for="date">Date of Service</label><br />
    <input id="date" type="text" data-h5-errorid="error-service" name="date" required />
    <span id="error-service" class="error">Please choose a date</span>
</p>
<p>
    <label for="reminder">Reminder</label><br />
    <select name="reminder">
        <option value="1">30 Days</option>
        <option value="2">60 Days</option>
        <option value="3">Semiannual</option>
        <option value="4">Annual</option>
    </select>
</p>
<p>
    <label for="notes">Notes on Service</label><br />
    <textarea name="notes" rows="15"></textarea>
</p>
<p>
    <input type="submit" value="Submit" />
</p>
</form>

我正在将所有字段存储在数据库中,并使用 http://medoo.in/使其正常工作。如何创建 PHP 脚本以根据服务日期和所选提醒(每 30 天、60 天、半年、每年)发送定期电子邮件?我正在考虑使用PHP邮件程序发送实际的电子邮件并运行每日cron作业。

<?php
//first start with a MySQL query to gather the rows to send an email
//this is for 30 days but you can adjust the numbers for each case
$30_day_query = "SELECT * FROM users WHERE reminder = 1 AND date
BETWEEN DATE_SUB(NOW(),INTERVAL 29 DAY) AND DATE_SUB(NOW(), INTERVAL 30 DAY)";
$execute = mysql_query($30_day_query);
while($row = mysql_fetch_array($execute)){
//get info of user
$name = $row['name'];
$email = $row['email'];
//send the email however you want
}
//repeat for the rest of the reminder options
?>

如果您在日常 cron 作业中运行此任务,则不会发送重复的电子邮件。

只需编写一段代码来配置cronjob的时间间隔。使用从表单中接收的数据。如果您使用的是DirectAdmin,只需遵循Dušan Radojević的Cronjob执行PHP脚本答案。然后它几乎完成了!