|
|
|
PHP ส่ง Email ส่งถึง 2 ฉบับ ซ้ำกัน...ทั้งที่กดส่งครั้งเดียว |
|
|
|
|
|
|
|
Code (PHP)
<?PHP
ob_start(); //ส่งข้อมูลไปเก็บไว้ที่ buffer ก่อน เมื่อได้ครบ แล้วค่อยส่งไปทีเดียว...เก็บ HTML ไว้ในตัวแปร PHP
$host="localhost";
$user="root";
$pw="mypassword";
$dbname="numchai_db";
$c=mysql_connect($host,$user,$pw); //เชื่อมตอ
mysql_select_db($dbname,$c); //เลือกติดต่อกับฐานข้อมูลที่กำหนด
mysql_query("set names tis620"); //เชื่อมต่อไปเป็นภาษาไทย
if(!$c){
echo"<h3>Can't connect database!</h3>";
exit();
}
date_default_timezone_set('Asia/Bangkok');
$datetime = date("y-m-d H:i:s");
$thai_n=array("มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม");
$d=date("d");
$n=$thai_n[date("n")-1];
$y=date("Y")+543;
$t=date("H:i:s");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<div id="demo"></div>
<!-- <button onclick="myStopFunction()">Stop time</button> -->
ส่งเมล์อัตโนมัติ ทุกวัน ศุกร์ ในเวลา
<input name="timeseteday" type="text" id="timeseteday" style="width:100px; text-align:right;" value="12:00:00" />
นาฬิกา <br />
<script>
var myVar=setInterval(function(){myTimer()},1000);
function myTimer()
{
var d=new Date();
var t=d.toLocaleTimeString();
var duetime = document.getElementById('timeseteday').value;
document.getElementById("demo").innerHTML='ขณะนี้เวลา : ' + t + ' นาฬิกา';
if(t==duetime){
document.getElementById('testtimeid').innerHTML = "Yes....!";
location.reload();
}
}
function myStopFunction()
{
clearInterval(myVar);
}
function window_close()
{
window.close();
}
//----------------------------------//
</script>
<div id="testtimeid"></div>
<?PHP
$dayname[] = "'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'";
$datenow = jddayofweek(cal_to_jd(CAL_GREGORIAN, date("m"),date("d"), date("Y")) , 1 );
echo "Today is : {$datenow} <br>";
if($datenow=='Tuesday'){
echo "<script> window_load(); </script>"; //เรียนใช้ window_load */
ob_start();
require("PHPMailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSendmail(); // telling the class to use SendMail transport
$mail->CharSet = "utf-8"; //กำหนดรูปแบบตัวอักษร
$mail->IsHTML (true); //หากส่งในรูปแบบ html ถ้าส่งเป็น text ก็ลบบรรทัดนี้ออกได้
$mail->IsSMTP(); //กำหนดว่าเป็น SMTP
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true; //กำหนดให้มีการตรวจสอบสิทธิ์การใช้งาน
$mail->Host = "mail.numchai.com"; // ชื่อของเครื่องเซิร์ฟเวอร์ที่ให้บริการส่งอีเมล์ (SMTP mail server)
$mail->Port = 25; // พอร์ท 465; กำหนด port
$mail->Username = "numchai"; // account SMTP "[email protected]";
$mail->Password = "PEpanel526"; // รหัสผ่าน SMTP
$mail->SetFrom("[email protected]", "puttida"); //ผู้ส่ง
$mail->AddReplyTo("[email protected]", "puttida"); //ได้เมลล์แล้วตอบกลับถึงใคร
//Subject...Content หัวข้อที่ใช้ในการส่ง
$mail->Subject = "เปรียบเที่ยบยอดขาย 1 มกราคม ถึง $d $n ระหว่างปี 56 กับ 57. ณ.เวลา $t น.";
//หน้าที่จะส่ง MAIL
require('content1.php');
$body = ob_get_clean(); //ได้รับข้อมูลบัฟเฟอร์ปัจจุบันและลบบัฟเฟอร์ส่งออกในปัจจุบัน
$mail->Body = $body; //ใส่เนื้อหา
$mail->MsgHTML($body);
//EMAIL...
$mail->AddAddress("[email protected]", "คุณมุก"); //ผู้รับทดสอบ
$mail->AddAddress("[email protected]", "คุณมุก");
$email = array('[email protected]', '[email protected]');
foreach ($email as $ToEmail){
//แจ้งผลการส่งMAIL ...
if(!$mail->Send()) { #กรณีที่ส่งเมล์ไม่ได้
if ($datenow=='Tuesday'){mysql_query("INSERT INTO logfile_tb VALUES ('$ToEmail','$datetime','$datetime','Content 1','Error') ") or die(mysql_error());
echo "Mailer Error: " . $mail->ErrorInfo;
}
} else { #กรณีที่ส่งเมล์ได้
mysql_query("INSERT INTO logfile_tb VALUES ('$ToEmail',' $datetime','$datetime','Content 1','Finnish') ")
or die(mysql_error());
echo "Message sent already!";
}
}
}else {
mysql_query("INSERT INTO logfile_tb VALUES ('$ToEmail',' $datetime','$datetime','Content 1','Error Defalse Time') ") or die(mysql_error());
echo "Error Defalse Time";
}
mysql_close($c);
?>
<body onLoad="timer=setTimeout('window_close()',15000);">
<script>
setTimeout("testtime1()", 30000);
</script>
</body>
</html>
ค่อยๆแก้โค๊ด แก้ปัญหาไปเรื่อยจนตอนนี้มันมาติดที่
Email ส่งถึง 2 ฉบับ ซ้ำกัน...ทั้งที่กดส่งครั้งเดียว ผิดตรงไหน?? ตามรูปค่ะ
ขอบคุณทุกท่านที่มาตอบ มาให้ความรู้ล่วงหน้านะค่ะ ^__^
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2014-04-22 14:55:45 |
By :
itengineer |
View :
2593 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ปรับตำแหน่งของ foreach และค่า Email ที่ส่งให้ถูกต้องครับครับ ปัญหาคุณน่าจะ งง กับการทำงานของ foreach หรือไม่ก็หลักการทำงานงาน PHPMailer แก้ตามนี้
Code (PHP)
<?PHP
ob_start(); //ส่งข้อมูลไปเก็บไว้ที่ buffer ก่อน เมื่อได้ครบ แล้วค่อยส่งไปทีเดียว...เก็บ HTML ไว้ในตัวแปร PHP
$host="localhost";
$user="root";
$pw="mypassword";
$dbname="numchai_db";
$c=mysql_connect($host,$user,$pw); //เชื่อมตอ
mysql_select_db($dbname,$c); //เลือกติดต่อกับฐานข้อมูลที่กำหนด
mysql_query("set names tis620"); //เชื่อมต่อไปเป็นภาษาไทย
if(!$c){
echo"<h3>Can't connect database!</h3>";
exit();
}
date_default_timezone_set('Asia/Bangkok');
$datetime = date("y-m-d H:i:s");
$thai_n=array("มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม");
$d=date("d");
$n=$thai_n[date("n")-1];
$y=date("Y")+543;
$t=date("H:i:s");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<div id="demo"></div>
<!-- <button onclick="myStopFunction()">Stop time</button> -->
ส่งเมล์อัตโนมัติ ทุกวัน ศุกร์ ในเวลา
<input name="timeseteday" type="text" id="timeseteday" style="width:100px; text-align:right;" value="12:00:00" />
นาฬิกา <br />
<script>
var myVar=setInterval(function(){myTimer()},1000);
function myTimer()
{
var d=new Date();
var t=d.toLocaleTimeString();
var duetime = document.getElementById('timeseteday').value;
document.getElementById("demo").innerHTML='ขณะนี้เวลา : ' + t + ' นาฬิกา';
if(t==duetime){
document.getElementById('testtimeid').innerHTML = "Yes....!";
location.reload();
}
}
function myStopFunction()
{
clearInterval(myVar);
}
function window_close()
{
window.close();
}
//----------------------------------//
</script>
<div id="testtimeid"></div>
<?PHP
$dayname[] = "'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'";
$datenow = jddayofweek(cal_to_jd(CAL_GREGORIAN, date("m"),date("d"), date("Y")) , 1 );
echo "Today is : {$datenow} <br>";
if($datenow=='Tuesday'){
echo "<script> window_load(); </script>"; //เรียนใช้ window_load */
ob_start();
require("PHPMailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSendmail(); // telling the class to use SendMail transport
$mail->CharSet = "utf-8"; //กำหนดรูปแบบตัวอักษร
$mail->IsHTML (true); //หากส่งในรูปแบบ html ถ้าส่งเป็น text ก็ลบบรรทัดนี้ออกได้
$mail->IsSMTP(); //กำหนดว่าเป็น SMTP
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true; //กำหนดให้มีการตรวจสอบสิทธิ์การใช้งาน
$mail->Host = "mail.numchai.com"; // ชื่อของเครื่องเซิร์ฟเวอร์ที่ให้บริการส่งอีเมล์ (SMTP mail server)
$mail->Port = 25; // พอร์ท 465; กำหนด port
$mail->Username = "numchai"; // account SMTP "[email protected]";
$mail->Password = "PEpanel526"; // รหัสผ่าน SMTP
$mail->SetFrom("[email protected]", "puttida"); //ผู้ส่ง
$mail->AddReplyTo("[email protected]", "puttida"); //ได้เมลล์แล้วตอบกลับถึงใคร
//Subject...Content หัวข้อที่ใช้ในการส่ง
$mail->Subject = "เปรียบเที่ยบยอดขาย 1 มกราคม ถึง $d $n ระหว่างปี 56 กับ 57. ณ.เวลา $t น.";
//หน้าที่จะส่ง MAIL
require('content1.php');
$body = ob_get_clean(); //ได้รับข้อมูลบัฟเฟอร์ปัจจุบันและลบบัฟเฟอร์ส่งออกในปัจจุบัน
$mail->Body = $body; //ใส่เนื้อหา
$mail->MsgHTML($body);
$email = array('[email protected]', '[email protected]');
foreach ($email as $ToEmail){
//EMAIL...
$mail->AddAddress($ToEmail, "คุณมุก"); //ผู้รับทดสอบ
//แจ้งผลการส่งMAIL ...
if(!$mail->Send()) { #กรณีที่ส่งเมล์ไม่ได้
if ($datenow=='Tuesday'){
mysql_query("INSERT INTO logfile_tb VALUES ('$ToEmail','$datetime','$datetime','Content 1','Error') ") or die(mysql_error());
echo "Mailer Error: " . $mail->ErrorInfo;
}
} else { #กรณีที่ส่งเมล์ได้
mysql_query("INSERT INTO logfile_tb VALUES ('$ToEmail',' $datetime','$datetime','Content 1','Finnish') ") or die(mysql_error());
echo "Message sent already!";
}
} #จบ loop foreach
}else {
mysql_query("INSERT INTO logfile_tb VALUES ('$ToEmail',' $datetime','$datetime','Content 1','Error Defalse Time') ") or die(mysql_error());
echo "Error Defalse Time";
}
mysql_close($c);
?>
<body onLoad="timer=setTimeout('window_close()',15000);">
<script>
setTimeout("testtime1()", 30000);
</script>
</body>
</html>
|
ประวัติการแก้ไข 2014-04-22 15:17:27
|
|
|
|
Date :
2014-04-22 15:14:01 |
By :
arm8957 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องสั่ง clearAddesss ก่อนส่งอันใหม่ครับ (วิธีการดูกระทู้ที่คุณถามอันก่อนหน้าครับ)
|
|
|
|
|
Date :
2014-04-22 16:12:08 |
By :
itpcc |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|