我有一個控制檯應用程序,發佈到一個PHP頁面(使用Gmail和PHPMailer類)向用戶發送電子郵件。帶Gmail的PHPMailer類,每次發送兩封電子郵件
問題是,用戶總是收到郵件兩次!
下面是從C#我的文章(我在流體傳遞的日誌記錄。)
public static void PostUpdate(string uid)
{
WebRequest request = WebRequest.Create("http://127.0.0.1/bin/server/check_table.php");
request.Method = "POST";
string postData = "check_table";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
Console.WriteLine("[" + uid + "]- " + DateTime.Now.ToString() + " : HttpWebResponse(" + ((HttpWebResponse)response).StatusDescription + ")");
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
// Display the content for debugging
// Console.WriteLine("[" + uid + "]- " + DateTime.Now.ToString() + " : " + responseFromServer);
reader.Close();
dataStream.Close();
response.Close();
}
我的PHP文件由
$sql = "SELECT * FROM users as u JOIN value_store as v ON u.id = v.uid WHERE u.last_notification < DATE_SUB(NOW() , INTERVAL 5 MINUTE) ";
$results = mysql_query($sql, $db_link);
while($row = mysql_fetch_array($results)) {
$id = $row[0];
$msg = "";
if($row["inlet_moisture"] > $row["inlet_moisture_high_critical"]) {
$msg = "Critical Inlet Moisture";
} else if($row["inlet_moisture"] > $row["inlet_moisture_high_warning"]) {
$msg = "Inlet Moisture Warning";
}
if($msg != "") {
if($row["mobile_notification"] == 1) {
if(sendMessage(($row["mobile_number"] . "@" . $row["mobile_carrier"]), $row["first_name"], $msg)) {
$res1 = mysql_query("UPDATE users SET last_notification = NOW() WHERE id = $id",$db_link);
echo "SMS Sent for [$id]";
}
}
if($row["email_notification"] == 1) {
if(sendMessage($row["email"], $row["first_name"], $msg)) {
$res2 = mysql_query("UPDATE users SET last_notification = NOW() WHERE id = $id",$db_link);
echo "Email Sent for [$id]";
}
}
}
echo "Update For [$id] Complete!";
}
我已經考慮到了一些調試選項發佈。
我已經設置了我的控制檯應用程序來讀取WebRequest的輸出... 所以我可以看到我打開張貼頁面,POST是確定的。我認爲可能有一個關閉問題,因爲數據庫中有兩行,如果我回顯每行的ID,我只能得到最後一行(兩次)。我試圖更新我的PHP while循環輸出爲我使用的id(行)。
我仍然收到
Update For [2] Complete!
Update For [2] Complete!
,而不是
Update For [1] Complete!
Update For [2] Complete!
見上文修訂。
你調用SendMessage()的兩倍。一個用於真實的電子郵件地址,一個用於SMS。不知道你的用戶,但我的手機拿起我的工作電子郵件,以及短信,所以我傾向於得到雙重通知 –
是的,但這是一種非常不同的發送方式。通過電子郵件短信我發送到[phoneNumber] @ [mobilecarrier]和電子郵件它是用戶的電子郵件地址。我可以驗證這些呼叫是否不明確。一個發送一封電子郵件,一個發送短信。如果你認爲我只是瘋了,看着他們一樣;一個是我的手機短信,電子郵件綁定到我通過Outlook閱讀的Gmail帳戶。 – rlemon
檢查服務器的訪問日誌 - 被稱爲兩次的PHP腳本?如果是這樣,那麼它是你的C#代碼的東西。 –