【问题标题】:PHPMailer comma seperated emailsPHPMailer 逗号分隔的电子邮件
【发布时间】:2020-06-17 11:50:58
【问题描述】:

我有一个数据库字段,其中包含用逗号分隔的电子邮件,如下所示

email1@domain.com、email2@domain.com 等

我正在使用 PHP Mailer,并在这里找到了几篇文章,解释了如何遍历每封电子邮件以将每封电子邮件添加到电子邮件地址

我显然做错了,因为我下面的代码只发送到一封电子邮件

$sql="SELECT Email FROM Managers WHERE Company = '$name';"; 
    $result = mysqli_query($db,$sql);
    while ($row = mysqli_fetch_assoc($result));  

        $address = explode (',' , $row['Email']);

        foreach ($address as $key => $v) {$mail->addAddress($key);}

当我输出结果以检查输出时,我只会将所有电子邮件视为一个没有逗号的字符串

任何建议都将不胜感激,因为从我在这里阅读的内容来看,这应该可行。

更新:我现在的工作如下。感谢您的帮助:

$sql="SELECT Email FROM Managers WHERE Company = '$name';"; 
    $result = mysqli_query($db,$sql);

    while ($row = mysqli_fetch_array($result)) { 

    $address = $row['Email'];
    $address2 =  explode (',',$address);

    foreach ($address2 as $v) {$mail->addAddress($v);}

【问题讨论】:

  • 究竟输出了什么?您尝试过什么调试问题?
  • 嗨 Nico,我在 var dump 中添加了,所以我可以看到查询正在获取什么。我还刚刚查看了初始数据库查询的结果,以检查是否正常。当我查看分解的输出时,它只显示来自 DB 的逗号分隔值,但没有逗号。我尝试更改分隔符并三次检查空格等数据。我还在代码中添加了“修剪”以防万一。我已经做出了 Synchro 指出的改变。我已经走到了一个死胡同!!!我的想法是我在做一些非常愚蠢的错误,但如果我是我就看不到它!
  • 请分享转储代码,以及转储数据的结果
  • 嗨。我正在使用: var_dump (explode(',', $row['Email'])); var_dump (explode(',', $v));输出为:array(1) { [0]=> string(0) "" } 我还输出 PHPMailer 错误:Mailer 错误:您必须提供至少一个收件人电子邮件地址。这很清楚!但它应该找到一个电子邮件地址,因为 sql 查找是 definitley 找到一个匹配谢谢
  • 请通过编辑将所有此类解释添加到您的问题中。如果分解后的数组为空,则问题出在其他地方

标签: mysql phpmailer


【解决方案1】:

始终检查您的代码真正在做什么,不要假设它在做您认为的事情。

您的代码中有一个简单的错误:

foreach ($address as $key => $v) {$mail->addAddress($key);}

应该是:

foreach ($address as $v) {$mail->addAddress($v);}

否则,您将提交列名作为电子邮件地址。

【讨论】:

  • 非常感谢同步。我已经做出了改变,但不幸的是它不起作用。我检查时得到的输出是:array(1) { [0]=> string(0) "" } dean@xxx.co.ukdean@yyy.com 来自数据库的原始数据如下:'dean@xxx .co.uk,dean@yyy.com' 谢谢
  • 那个 doesn't 看起来像 var_dump($row) 的输出,因为它应该有一个关联索引。请在您的问题中添加更多您尝试过的内容和输出。
  • 谢谢。我现在添加了 var_dump($row) ,它带回 NULL var_dump(explode(',',($v)) 返回:array(1) { [0]=> string(12) "dean@yyy.com" } - 这是逗号分隔字符串中的一封电子邮件我检查了数据中没有空格并尝试更改分隔符以防万一我在字符串中添加了更多电子邮件地址,每次代码只是拉出最后一个一行中的一个。目前该代码没有向任何人发送电子邮件(为了清楚起见,我显然正在更改电子邮件域。)谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多