2014-02-28 22 views
0

我是新來的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,'[email protected]','~Contact.Email~','ccAddresses', 'bccAddresses', 'contentType', 'JK', 'htmlBody', 'txtBody');} 
} 

?> 
+1

可以使用Cron任務。 –

+0

快速掃描您的腳本告訴我,它是好的,正如阿里所說,設置一個cron作業,每X分鐘運行一次。 – AmazingDreams

+0

您的第一個for()循環將僅給您發送** ONE **電子郵件地址,因爲循環會不斷覆蓋先前記錄的地址。 –

回答

1

您應該使用cron作業。

首先,你必須創建一個php腳本,看看是否有任何電子郵件發送(它可以是一個簡單的php文件,獲取時間並將其與數據庫中的時間戳進行比較,然後獲取有關你要發送的電子郵件,用你的標題,主題和正文組成電子郵件,並通過發送完成。)

其次你必須在shell中執行它(我假設你正在使用Linux系統)來測試if它工作正常。要在shell中執行一個PHP可以使用的下一個命令

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

也許命令PHP不能工作,所以你一定要知道你已經安裝了PHP客戶端(很重要,你必須先安裝了PHP客戶端你的系統 - apt-get install php5-cli)。你可以知道你有沒有在你的系統中鍵入一個shell

which php 

你會發現關於如何在url Shell run/execute php script with parameters

,您必須在第三件事exec的PHP在外殼的更多信息,未來安裝的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

另一種方式來安排的電子郵件在稍後的時間被髮送之前添加下一行是通過一種方式系統公司mmand與at結合sendmail,就像這樣:

/usr/sbin/sendmail -f [email protected] [email protected] < message.txt | at 16:00 today 

這可能是比運行cron作業,對需要發送的電子郵件查詢數據庫每隔幾分鐘乾淨了一點。您可以使用php的shell_exec函數從PHP腳本運行上述系統命令。

1

如果您的服務器全天候沒有可用的服務器,那麼您也可以爲您的目的充分利用雲。

設置此項的簡單方法是在IaaS或PaaS上使用Jenkins,您只需創建作業並指定何時啓動它,而無需安裝或配置任何內容。

cron作業配置可以按照指定的方式完成here。完成一步一步的指導,也可以找到here