Php 如果多行中有相同的电子邮件地址,请保留所有要发送的邮件,然后发送一次
好吧,我已经放弃玩我的代码,我已经用尽了所有的想法 我这里有一个简单的代码,可以向用户发送电子邮件,告知他们发送给我的域的状态。有时,一个用户发送多个域,我希望,与其为他们发送给我的每个域发送电子邮件,我只记录每个域的状态,然后发送一次 以下是我正在使用的代码:Php 如果多行中有相同的电子邮件地址,请保留所有要发送的邮件,然后发送一次,php,mysql,email,Php,Mysql,Email,好吧,我已经放弃玩我的代码,我已经用尽了所有的想法 我这里有一个简单的代码,可以向用户发送电子邮件,告知他们发送给我的域的状态。有时,一个用户发送多个域,我希望,与其为他们发送给我的每个域发送电子邮件,我只记录每个域的状态,然后发送一次 以下是我正在使用的代码: function is_url_alive($url) { $url = 'http://' . $url; $headers = @get_headers($url); if ($headers[0] == '
function is_url_alive($url) {
$url = 'http://' . $url;
$headers = @get_headers($url);
if ($headers[0] == 'HTTP/1.1 200 OK') {
echo 'alive';
} else {
echo 'down/not alive';
}
}
while ($row = mysql_fetch_assoc($result)) :
$to = $row['email'];
$subject = 'The Status of the URL you sent us';
$message = 'hello! The domain ' . $row['url'] .' that you sent us, using automated system, was found out to be ' . is_url_alive($row['url']);
mail($to, $subject, $message);
endwhile;
======================================================
如果要了解我的数据库的结构,请运行以下代码:
$result = mysql_query("SELECT * FROM domain_db ORDER BY email");
while ($row = mysql_fetch_assoc($result)) :
print_r($row);
echo '<br />';
endwhile;
从输出中可以看到,原始脚本必须发送7封电子邮件。但是,只需向每封电子邮件发送一封邮件,理想情况下只需发送两封电子邮件
提前感谢并提供更多功能。使用电子邮件作为密钥将结果存储并分组到一个数组中 然后迭代该数组并为每个用户发送邮件
$users = array();
while ($row = mysql_fetch_assoc($result)) :
$users[$row['email']][] = array('url' => $row['url'], 'result' => is_url_alive($row['url']));
endwhile;
foreach($users as $email => $urls) {
.... send your mail here and implode the urls, results..
}
先生,通过电子邮件使用SELECT*FROM domain_db GROUP将输出减少到只有两个具有不同电子邮件地址的条目,其他行消失了,但是,我仍然需要处理其他条目。这意味着什么:“然后迭代那个数组”我昨天没有看到完全相同的问题吗?@PeeHaa是的,先生,因为这个原因已经12小时没睡觉了。今天可没那么有成效,呆头呆脑的。
$users = array();
while ($row = mysql_fetch_assoc($result)) :
$users[$row['email']][] = array('url' => $row['url'], 'result' => is_url_alive($row['url']));
endwhile;
foreach($users as $email => $urls) {
.... send your mail here and implode the urls, results..
}