群发邮件不止一次发送到每封邮件

时间:2014-06-06 13:57:18

标签: php html mysql forms email

我已经发了一个群发邮件功能。我在数据库中插入了3封邮件,但是当我使用群发邮件功能时,邮件会向每封电子邮件发送超过1次的邮件。我试图解决它,但我不能。我猜问题是在循环结束时。

以下是代码:

<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>';
}
}
}

?>

2 个答案:

答案 0 :(得分:0)

邮件功能非常不可靠。最好的选择是将此外包给像mailchimp或madrill这样专门从事这项工作的公司。您可以在this链接

中找到更多信息

答案 1 :(得分:0)

我的猜测是它在while循环中,但最好的办法是尝试调试问题。您可以使用print_r()和die()函数执行此操作。

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

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

然后复制并粘贴此处出现的内容,但用虚拟电子邮件替换电子邮件,因为我们仍然可以获得有关正在发生的事情的某种想法。或者也许当你这样做时,你会知道发生了什么。