2013-03-27 106 views
0

我有以下腳本調用該查詢數據庫和輸出結果作爲電子郵件。但是,我想單獨發送結果(10個結果= 10封電子郵件),而不是在一封包含所有結果的電子郵件中。電子郵件的個人結果(10結果= 10電子郵件),而不是1電子郵件與其中的所有數據

任何一種靈魂都可以指向正確的方向嗎?這就是我現在所擁有的。我應該對結果進行預測嗎?

<?php 
//authentication for database 
$hostname = "xxxx"; 
$username = "xxxx"; 
$password = "xxxx"; 

//connection to the database 
$dbhandle = mysql_connect($hostname, $username, $password) 
or die("Unable to connect to MySQL"); 

//select a database to work with 
$selected = mysql_select_db("test",$dbhandle) 
or die("Could not select examples"); 

//execute the SQL query and return records 
$result = mysql_query("SELECT * FROM tbl_assignees WHERE work_pass_expiry = DATE(NOW())"); 

if (!$result) { 
//handle your error 
die('The query failed.'); 
} 

//variable for email message 
$to  = 'some email address'; 
$emailBody = ""; 

//fetch tha data from the database 
while ($row = mysql_fetch_array($result)) 
{ 
$subject = $row['name']."'s"." work pass is expiry soon"; 
$emailBody .="Creator: ".$row['rlog_create_user_name']." \n"; 
$emailBody .="Company: ".$row['company']."\n"; 
$emailBody .="Assignee's Name: ".$row['name']." \n"; 
$emailBody .="Fin No: ".$row['fin_no_']." \n"; 
$emailBody .="Relationship: ".$row['relationship']." \n"; 
$emailBody .="Main Holder's Fin :".$row['main_holder_fin']." \n"; 
$emailBody .="Work Pass Type :".$row['work_pass_type']." \n"; 
$emailBody .="Work Pass Expiry :".$row['work_pass_expiry']." \n"; 
$emailBody .="Passport No. :".$row['passport_no_']." \n"; 
$emailBody .="Passport Expiry :".$row['passport_expiry']." \n"; 
$emailBody .="D.O.B :".$row['d_o_b']." \n"; 
$emailBody .="Contact :".$row['contact']." \n"; 
$emailBody .="Email :".$row['email']." \n"; 
$emailBody .="Notes :".$row['note']; 

} 

$headers = 'From: Work Pass Notification System <[email protected]>' . "\r\n" . 
    'Reply-To: someemailaddress' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 


if(mail($to, $subject, $emailBody, $headers)) { 
echo $emailBody; 
echo 'Email sent successfully!'; 
} else { 
echo $emailBody; 
die('Failure: Email was not sent!'); 

} 
//close the connection 
mysql_close($dbhandle); 
?> 

回答

0

添加郵件功能的while循環是這樣的:

while ($row = mysql_fetch_array($result)) 
{ $to  = 'some email address'; // it's good if you get email ids from database also 
    $emailBody=""; // Clear body for each email. 

    /** Your Email Subject and body Here **/ 

    $headers = 'From: Work Pass Notification System <[email protected]>' . "\r\n" . 
    'Reply-To: someemailaddress' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

     if(mail($to, $subject, $emailBody, $headers)) { 
      echo $emailBody; 
      echo 'Email sent successfully!'; 
     } else { 
      echo $emailBody; 
      die('Failure: Email was not sent!'); 
     } 
} 

這將發送電子郵件等於從數據庫中檢索記錄的數量。

+0

我試過了,它確實發出了2封電子郵件,滿分爲2個匹配結果。 但是,現在電子郵件以以下格式發送,第一封電子郵件包含A,第二封電子郵件包含A + B。 如何確保電子郵件內容未添加到下一封電子郵件中,即第一封電子郵件包含只有第二封電子郵件只包含B? 我很接近完成這個,真的需要指導。 請指教。 謝謝 – 2013-03-27 09:54:46

+0

正如我所提到的,在向其添加內容之前,您必須在循環中使用$ emailBody =「」每次清除$ emailBody內容。這將確保以前的郵件內容不會被添加到下一個。 – 2013-03-27 12:15:43

相關問題