【问题标题】:Mass mail sends more than once to every mail群发邮件向每封邮件发送不止一次
【发布时间】:2014-07-27 19:53:29
【问题描述】:

我做了一个群发邮件功能。我在数据库中插入了 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>';
}
}
}

?>

【问题讨论】:

  • 完成任何基本调试,例如检查您的数据库中是否有每个电子邮件地址的多个副本?

标签: php html mysql forms email


【解决方案1】:

我的猜测是它在 while 循环中,但最好的办法是尝试调试问题。您可以使用 print_r() 和 die() 函数来做到这一点。

我的建议是将它放在 while 循环之前,以了解您是否有重复的数据,或者它是如何多次出现的。

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

然后复制并粘贴此处出现的内容,但将电子邮件替换为虚拟电子邮件,因为我们仍然可以对发生的事情有所了解。或者,当你这样做时,你就会知道发生了什么。

【讨论】:

  • 电子邮件发送到:oliverweitman123@hotmail.com 数组([0] => Oliver@tjaabba.com [email] => Oliver@tjaabba.com)我认为 while 循环的问题在于它重复。如果我使用另一个循环,你认为这会起作用吗
  • 虽然循环并不意味着重复。你确定你没有在某个地方得到重复的数据吗?他们应该遍历数据,然后继续执行下一步,直到没有更多数据为止。
【解决方案2】:

邮件功能非常不可靠。最好的选择是将这个外包给像 mailchimp 或 madrill 这样的专业公司。您可以在this链接中找到更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多