在将来的某个时间发送电子邮件

时间:2014-02-28 15:09:20

标签: php sendmail infusionsoft

我是php的新手,我正在制作一个获取数据表格数据库的计划页面。从数据库中我选择发送的电子邮件的发送时间和日期。我要做的是,如果发送日期和时间到了,系统应该发送电子邮件到该地址。

对于电子邮件发送,我使用此API

这是我的代码,我应该在此添加以执行此类功能。 我试图得到3件事。 1.从已达到时间的数据库中获取数组。 2.使用循环将它们存储在数组中。 3.通过循环向他们发送电子邮件。 这是我的代码。

<?php
  include('iSDK/src/isdk.php');
  $myApp = new iSDK();
  Test Connnection
  if ($myApp->cfgCon("connectionName"))

  {
  echo "Connected...";
  }
  else
  {
  echo "Not Connected...";
  }
  $query = mysql_query('SELECT communication.senddatetime,emails.email
                        FROM communication
                        INNER JOIN emails
                        ON communication.communication_id=emails.communication_id
                        WHERE senddatetime <= NOW()'); //or die(mysql_error())
 while($row = mysql_fetch_assoc($query)){
 $email=array($fetch);
 $result=mysql_num_rows($query);
 for($i=0; $i<$result; $i++){
 $obj=mysql_fetch_object($query);
 $emailaddress=$obj->email;
 }

 for($i=0; $i<$result; $i++){
 $conDat = array('FirstName' => 'Hassan',
                          'Email'     => $email);
        $conID = $myApp->addCon($conDat);
        $clist = array($conID);
$email = $myApp->sendEmail($clist,'kamranasadi431@gmail.com','~Contact.Email~','ccAddresses', 'bccAddresses', 'contentType', 'JK', 'htmlBody', 'txtBody');}
}

?>

3 个答案:

答案 0 :(得分:1)

你应该使用cron jobs。

首先,您必须创建一个php脚本,其外观是否有任何要发送的电子邮件(它可以是一个简单的php文件,可以获取时间并将其与数据库中的时间戳进行比较,然后获取有关该电子邮件的信息你想发送,用你的标题,主题和正文撰写电子邮件,然后通过发送完成它。)

其次你必须在shell中执行它(我假设你正在使用Linux系统)来测试它是否正常工作。要在shell中执行php,您可以使用下一个命令

php /route/to/your/php/script.php var1 var2 .... varN

也许命令php无法工作所以你必须知道你安装了哪个php客户端(非常重要,你必须先在你的系统中安装一个php客户端 - apt-get install php5-cli )。你可以知道你在系统中安装了哪个php,在shell中键入下一个

which php

您可以在网址Shell run/execute php script with parameters

中找到有关如何在shell中执行php的更多信息

你必须要做的第三件事是在cronjob中编写脚本。例如,如果你想以5分钟的间隔执行它,你可以在cron中写下下一个(crontab -e)

*/5 * * * * php /route/to/your/php/script.php var1 var2 > /dev/null

或者

*/5 * * * * /usr/bin/php /route/to/your/php/script.php var1 var2 > /dev/null

你还有其他选择让php成为一个exec文件,所以你不能在你的脚本之前使用php,而是在打开你的php之前添加下一行

#!/usr/bin/php
<?php

答案 1 :(得分:1)

计划稍后发送电子邮件的另一种方法是通过将sendmailat相结合的系统命令,如下所示:

/usr/sbin/sendmail -f from@from.com to@to.com < message.txt | at 16:00 today

这可能比每隔几分钟运行一个cron作业更清晰一些,它会在数据库中查询需要发送的电子邮件。您可以使用php的shell_exec函数从PHP脚本运行上述系统命令。

答案 2 :(得分:1)

如果您的终端没有可用的服务器24/7,您也可以利用云端的优势。

设置此方法的一种简单方法是在IaaS或PaaS上使用Jenkins,您只需创建作业并指定何时启动它,而无需安装或配置任何内容。

可以按照指定here的方式完成cron作业配置。完整的分步指南也可以找到here