【发布时间】:2016-08-10 20:57:32
【问题描述】:
我有一个带有 EMAIL 行的 MySQL 数据库。
用户执行搜索,相关信息以<table> 格式出现(地址 1、地址 2、电话、传真、电子邮件等)。
在<tabel> 中,最后一列有一个“电子邮件”按钮,如果您单击它,系统会自动向该电子邮件地址发送一封电子邮件。
我在这里找到了一篇实际上对我有用的文章,但它会向数据库中的每个人发送电子邮件。如何修改此 php 以仅向该特定行发送电子邮件。
这是我发现的:
mysql_connect('localhost', 'mysql_user', 'mysql_password') or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT email FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
sendMail($row[0]);
}
mysql_free_result($result);
function sendMail($to){
$subject = 'AC the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
- 添加/替换什么以将电子邮件发送到 DB TABLE 中的单个行?
- 当此代码发送到我的 gmail 帐户的电子邮件时,我可以看到发件人是:“webmaster@example.com ip-XXX-XXX-XXX-XXX.yyyyyyyyyyy.zzzz.net”(这是我服务器的 IP) ....为什么会这样???
我已在此代码中添加以下内容,以查看它是否选择了正确的记录(确实如此):
mail($to, $subject, $message, $headers);
echo 'email has been sent to: ' . $to . '<br/>';
}
发送电子邮件后,它会将电子邮件地址列出回给我,并且所有电子邮件地址都会收到电子邮件...
感谢您的帮助!
【问题讨论】:
-
您需要一些数据来识别要发送电子邮件的个人用户,例如用户名或用户 ID,以便您的数据库查询更具体,例如
SELECT email FROM mytable WHERE userid = '136'; -
您发现的任何使用
mysql_*函数的代码示例都可以安全地丢弃,因为它们要么非常陈旧,要么过时,要么质量很差。您应该为所有新项目使用 PDO 或 mysqli。