群发邮件向每个邮件发送不止一次


Mass mail sends more than once to every mail

我做了一个群发邮件的功能。我在数据库中插入了3封邮件,但当我使用群发邮件功能时,邮件发送到每个电子邮件的时间超过1次。我试过修好它,但我做不到。我猜问题出在while循环的末尾。

代码如下:

<html>
<form action="send_mass_mail.php" method="post">
<label>Subject of email:</label><br><input type="text" name="subject" id="subject"/><br>
<label>Body of email:</label><br><input type="textarea" name="body"></label><br>
<input type="submit" name="submit" value="Submit"/>
</form>
</html>
<?php
$user = ""; 
$password = ""; 
$host = ""; 
$dbase = ""; 
$table = "Mail"; 

$from= 'tjaabba.com@news.se';//specify here the address that you want email to be sent from
$subject= $_POST['subject'];
$body= $_POST['body'];
// Connection to DBase 
mysql_connect($host,$user,$password) 
or die("Unable to select database");
mysql_select_db('tjaabba_com');
$query= "SELECT * FROM $table";
$result= mysql_query ($query) 
or die ('Error querying database.');
while ($row = mysql_fetch_array($result)) {
$email= $row['email'];
$msg= "Dear mail_form,'n$body";
if(isset($_POST['subject'])){
if(isset($_POST['submit'])){
mail($email, $subject, $body, 'From:' . $from);
echo 'Email sent to: ' . $email. '<br>';
}
}
}
?>

邮件功能非常不可靠。最好的选择是将外包给mailchimp或madrill等专门从事此工作的公司。你可以在这个链接中找到更多信息

我猜它是在while循环中,但最好的方法是尝试调试这个问题。您可以使用print_r()和die()函数来完成此操作。

我的建议是把这个放在while循环之前,看看你是否有重复的数据,或者它是如何不止一次出现的。

print_r(mysql_fetch_array($result));
die();

然后复制粘贴这里出现的任何内容,但是用虚拟电子邮件代替电子邮件,因为我们仍然可以对正在发生的事情有一些了解。或者当你这样做的时候,你会对正在发生的事情有一个想法。