2012-08-29 22 views
-1

所以我有這個代碼完全沒有'文件附件',並將輸入的HTML消息發送到MYSQL數據庫中的所有收件人,但是當我做插槽在附件代碼中,郵件被髮送但只有一個收件人。請幫我:)爲什麼我的腳本只發送一條消息給MYSQL數據庫中的一個收件人

<html> 
<head> 
<title>test</title> 
</head> 
<body> 

<? 

mysql_connect("localhost", "root", "mypass") or die("Could not connect: " . mysql_error()); 

mysql_select_db("mydb"); 

$sql = mysql_query("SELECT * FROM mytable"); 

while($row = mysql_fetch_array($sql)){ 

$email = $row["email"]; 
$strSubject = $_POST["txtSubject"]; 
$strMessage = nl2br($_POST["txtDescription"]); 

//*** Uniqid Session ***// 
$strSid = md5(uniqid(time())); 

$strHeader = ""; 
$strHeader .= "From: ".$_POST["txtFormName"]."<".$_POST["txtFormEmail"].">\nReply-To: ".$_POST["txtFormEmail"].""; 

$strHeader .= "MIME-Version: 1.0\n"; 
$strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n"; 
$strHeader .= "This is a multi-part message in MIME format.\n"; 

$strHeader .= "--".$strSid."\n"; 
$strHeader .= "Content-type: text/html; charset=utf-8\n"; 
$strHeader .= "Content-Transfer-Encoding: 7bit\n\n"; 
$strHeader .= $strMessage."\n\n"; 
} 
//*** Attachment ***// 
if($_FILES["fileAttach"]["name"] != "") 
{ 
    $strFilesName = $_FILES["fileAttach"]["name"]; 
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 
    $strHeader .= "--".$strSid."\n"; 
    $strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n"; 
    $strHeader .= "Content-Transfer-Encoding: base64\n"; 
    $strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n"; 
    $strHeader .= $strContent."\n\n"; 
} 


$flgSend = @mail($email,$strSubject,null,$strHeader); // @ = No Show Error // 

if($flgSend) 
{ 
    echo "Task Complete. Your emails are being forwareded to your clients"; 
} 
else 
{ 
    echo "Error!!! Task incomplete. Please contact website maintainer."; 
} 
?> 
</body> 
</html> 
+0

你設置'內$ email'你'while'子句 - 但只有最終值將被保存循環的結尾。我看不到這是如何發送電子郵件給多人開始...... – andrewsi

+0

它的工作原理。當我嘗試添加文件附件代碼時,我只弄亂了代碼。所以代碼現在都是失真的。但沒有附件代碼,它發送 –

回答

1

你是不是送你的while循環中的電子郵件。

$strHeader .= $strMessage."\n\n"; 
} //This is the end of your while loop 
//*** Attachment ***// 
if($_FILES["fileAttach"]["name"] != "") 
{ 

所以,你的代碼應該是這樣的:

<html> 
<head> 
<title>test</title> 
</head> 
<body> 

<? 

mysql_connect("localhost", "root", "mypass") or die("Could not connect: " . mysql_error()); 

mysql_select_db("mydb"); 

$sql = mysql_query("SELECT * FROM mytable"); 

while($row = mysql_fetch_array($sql)){ 

$email = $row["email"]; 
$strSubject = $_POST["txtSubject"]; 
$strMessage = nl2br($_POST["txtDescription"]); 

//*** Uniqid Session ***// 
$strSid = md5(uniqid(time())); 

$strHeader = ""; 
$strHeader .= "From: ".$_POST["txtFormName"]."<".$_POST["txtFormEmail"].">\nReply-To: ".$_POST["txtFormEmail"].""; 

$strHeader .= "MIME-Version: 1.0\n"; 
$strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n"; 
$strHeader .= "This is a multi-part message in MIME format.\n"; 

$strHeader .= "--".$strSid."\n"; 
$strHeader .= "Content-type: text/html; charset=utf-8\n"; 
$strHeader .= "Content-Transfer-Encoding: 7bit\n\n"; 
$strHeader .= $strMessage."\n\n"; 
//********************* This is the old end of while loop} 
//*** Attachment ***// 
if($_FILES["fileAttach"]["name"] != "") 
{ 
    $strFilesName = $_FILES["fileAttach"]["name"]; 
    $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 
    $strHeader .= "--".$strSid."\n"; 
    $strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n"; 
    $strHeader .= "Content-Transfer-Encoding: base64\n"; 
    $strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n"; 
    $strHeader .= $strContent."\n\n"; 
} 


$flgSend = @mail($email,$strSubject,null,$strHeader); // @ = No Show Error // 

if($flgSend) 
{ 
    echo "Task Complete. Your emails are being forwareded to your clients"; 
} 
else 
{ 
    echo "Error!!! Task incomplete. Please contact website maintainer."; 
} 

} // New end of while loop 
?> 

+0

謝謝你的回覆:)但即時通訊仍然沒有得到你:我應該怎麼做?抱歉的人,即時通訊如此新的PHP。是的,這是表格中的最後一個電子郵件 –

+0

我更新了向你展示! – Dameo

2

您的電子郵件發送代碼迴路的

外移這裏面以下:

while($row = mysql_fetch_array($sql)){ 
} 
+0

謝謝你的回覆:)但即時通訊仍然沒有得到你:請告訴我代碼本身的變化 –

+0

http://pastie.org/4612065 – sumskyi

相關問題