【问题标题】:send mail to multiple users using php使用php向多个用户发送邮件
【发布时间】:2014-06-05 03:38:17
【问题描述】:

我正在尝试使用 php 向多个用户发送电子邮件,但遇到了一些问题。我可以很好地发送到电子邮件地址,但它会在 to 字段中显示所有电子邮件地址。我希望它循环并分别将电子邮件发送给每个用户。

我的php代码是

这里我从 MYSQL 获取所有信息。

$r=mysql_query("SELECT * FROM user WHERE USER_ID='$user_id");
$r=mysql_fetch_array($r);
$emailfrom=$r['EMAIL_FROM'];
$emailpriority=$r['EMAIL_PRIORITY'];
$emailsubject=$r['EMAIL_SUBJECT'];
$emailto=$r['EMAIL_TO']; --> data stored here is the email addresses of the users.

它也已经格式化 -> 示例:test1@test.com,test2@test.com,test3@test.com 等

电子邮件标题

$subject = "$emailsubject";
$mailer = "$emailfrom";
$headers = "From: $mailer \r\n";
$headers .= "Reply-To: $mailer\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Importance: $emailpriority\r\n";

mail($emailto, $subject, $message, $headers); 

非常感谢您。

【问题讨论】:

  • 您可以尝试使用分号而不是逗号分隔电子邮件地址吗?
  • 试过了,不发邮件
  • 尝试将$emailto 解析为地址数组。我已经发布了一个答案,描述了如何做到这一点。

标签: php mysql


【解决方案1】:

您可以像zeantsoi 所说的那样循环,也可以使用PHPMailer 库,哪个更适合您的要求。

您可以参考文档here

【讨论】:

    【解决方案2】:

    首先使用explode() 将字符串$emailto 中的每个地址解析为数组的成员。由于您的字符串是逗号分隔的,因此您需要将字符串 ',' 作为第一个参数传递:

    $addresses = explode(',', $emailto);
    

    这会产生一个地址数组,您可以循环并在每次迭代时分别执行mail()

    foreach ($addresses as $recipient) {
        mail($recipient, $subject, $message, $headers); 
    }
    

    【讨论】:

    • 嗨,我早就试过了,但它没有发送电子邮件。 :(
    • 您需要将字符串 $emailto 解析为电子邮件地址数组。我已经更新了我的答案以反映。
    • 完美!非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多