繁体   English   中英

为什么我的脚本仅向MYSQL DB中的一个收件人发送消息

[英]why is my script sending a message to only one recipient in a MYSQL DB

因此,我使用的这段代码在没有“文件附件”的情况下可以完美地工作,并将html中键入的消息发送给MYSQL DB中的所有收件人,但是当我在附件代码中插入插槽时,邮件只会发送给一个收件人。 请帮帮我:)

<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>

您的电子邮件发送代码不在循环中

将其移到下面:

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

您不在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
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM