【问题标题】:Send batch users their usernames via email using PHP使用 PHP 通过电子邮件向批量用户发送他们的用户名
【发布时间】:2013-03-19 21:35:51
【问题描述】:

我正在尝试编写一些 PHP 代码,通过电子邮件向我数据库中的每个用户(大约 500 个)发送他们的用户名。我已经成功地提取了每个用户的电子邮件地址和用户名,并将它们存储在一个数组中。但是,我不知道如何通过电子邮件向每个用户发送他们各自的用户名。我很确定我需要使用foreach 循环来执行此操作,但我没有运气。 这是我所拥有的。

<?php
include('databaseConn.php');

$query = mysql_query("SELECT * FROM staff");
$emailArray;

while ($row = mysql_fetch_array($query)) {
$emailArray[] = array($row['email']=>$row['username']);
}

print_r($emailArray); //This associative array now contains each username along with their respective email address.

?>

==***********=== 带邮件功能

<?php
include('functions/core.php');

$query = mysql_query("SELECT * FROM users");
$emailArray;

while ($row = mysql_fetch_array($query)) {
    $emailArray[] = array($row['email']=>$row['username']);
}

foreach($emailArray as $email => $username) {
    echo $username; // outputs the indexes.


$subject = 'Accoutn Details';

$message = 'This email contains your login details.<br/><br/>
<b>Username: '.$username.'</b><br/>
<br/><br/>Kind regards,<br/>';

$headers = 'From: noreply@xxxxx.co.uk' . "\r\n" .
    'Reply-To: noreply@xxxxx.co.uk' . "\r\n" .

$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

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

}


//print_r($emailArray);

?>

【问题讨论】:

  • 请注意,mysql_* 函数已被弃用(请参阅red box)。
  • 为什么不在 while 循环中发送邮件,无需 lop 两次。如果您在共享主机上,一次 500 个可能会成为问题。
  • manual page中有几个例子。

标签: php foreach associative-array


【解决方案1】:

在循环中使用邮件是个坏主意,除非它是一次性的,听起来很像,而且大多数共享主机不允许一次发送 500 封电子邮件。

$subject = 'Account Details';
$headers = 'From: noreply@xxxxx.co.uk' . "\r\n" .
    'Reply-To: noreply@xxxxx.co.uk' . "\r\n" .

$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

while ($row = mysql_fetch_array($query)) {

$message = 'This email contains your login details.<br/><br/>
<b>Username: '.$row['username'].'</b><br/>
<br/><br/>Kind regards,<br/>';

mail("$row['email']", $subject, $message, $headers);

    }

【讨论】:

  • 哇,如此简单却正是我所需要的。感谢您抽出时间回答我的问题。
【解决方案2】:

如果您的问题是如何使用 foreach...http://www.php.net/manual/en/control-structures.foreach.php

例如:

foreach ($emailArray as $email => $username) {
    // Send an email to $email with their $username
}

@Dagon 是对的,如果您不需要关联数组,则无需迭代两次。即使您确实需要一个数组,它也不一定必须是关联的;它可能是数据库中的原始行,您可以对其进行迭代。您需要关联数组的唯一时间是当您需要通过键(电子邮件地址)查找值(用户名)时,据我所知,您不需要做。

【讨论】:

    猜你喜欢
    • 2020-09-16
    • 2018-10-16
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多