您好,我想向数据库中的联系人列表发送电子邮件。代码没有选择数据库。我想知道我能做些什么来解决这个问题。这段代码似乎一直有效,直到到达 mysql_query
命令。如果未选择数据库且失败,则会返回此唯一错误。我逐行回显代码,它没有通过 $rs = mysql_query($query_Events, $gpd) or die(mysql_error());
命令。
请帮助我了解我如何无法正确解决此问题。
<?php
$hostname_gpd = "127.0.0.1";
$database_gpd = "localmail";
$username_gpd = "";
$password_gpd = "";
$gpd = mysqli_connect($hostname_gpd, $username_gpd, $password_gpd) or trigger_error(mysqli_error(),E_USER_ERROR)
;
$subject=$_POST['Subject'];
$note=$_POST['Message'];
$sender="xxxx@yahoo.com"; // Your Email here.
echo "Email has been sent to:";
// Connect database
mysqli_select_db($gpd,$database_gpd);
$query_Events = "SELECT `Email` FROM email_list ORDER BY `id` ASC";
$rs = mysqli_query($gpd,$query_Events) or die(mysqli_error($gpd));
if(!$rs)
{
echo mysqli_error();
}
else{ // Do while loop to send email.
while($row = mysqli_fetch_assoc($rs)){
$to=$row['Email'];
$mail_from="From:$Email n";
$mail_from .="Content-Type: text/html; charset=utf-8 n";
mail($to,$subject,$note,$mail_from);
// Show sent emails.
echo "$row[Email]<br>";
}}
?>
最佳答案
您的代码存在一些问题。
您的 mail() headers
无效、缺失 \r\n
你只有n
的地方这些已经被重新格式化。
结论性测试电子邮件不会进入 Yahoo 和 Gmail 中的垃圾邮件,而是进入收件箱。
我还添加了数据库参数;即使您使用 mysqli_select_db()
声明它,它也需要在那里
From:
应该一直使用$sender
变量而不是 $Email
因为每个收到电子邮件的人都会将其视为来自“他们”,我怀疑这就是您想要做的。
(经过测试并为我工作)并假设 mail()
可用,正确设置并在您的服务器上运行。
<?php
$hostname_gpd = "127.0.0.1";
$database_gpd = "localmail";
$username_gpd = "";
$password_gpd = "";
$gpd = mysqli_connect($hostname_gpd, $username_gpd, $password_gpd, $database_gpd)
or trigger_error(mysqli_error(),E_USER_ERROR);
$subject=$_POST['Subject'];
$note=$_POST['Message'];
/* my testing variables
$subject= "The subject";
$note= "My little note";
*/
$sender="xxxx@yahoo.com"; // Your Email here.
echo "Email has been sent to: ";
$query_Events = "SELECT `Email` FROM email_list ORDER BY `id` ASC";
$rs = mysqli_query($gpd,$query_Events) or die(mysqli_error($gpd));
if(!$rs)
{
echo mysqli_error();
}
else{ // Do while loop to send email.
while($row = mysqli_fetch_assoc($rs)){
$to=$row['email'];
$mail_from = "From: $sender" . "\r\n" . "Reply-To: $sender" . "\r\n";
$mail_from .= "Content-type: text/html; charset=utf-8 \r\n";
mail($to,$subject,$note,$mail_from);
// Show sent emails.
// echo "$row[email]<br>";
echo "$row[email]" . "<br>";
}
}
?>
<小时/>
还要确保您的表单元素已命名并与您的 PHP 处理程序变量相匹配。
例如:
<form action="handler.php" method="post">
Enter subject: <input type="text" name="Subject">
<br>
Enter message:
<br>
<textarea rows="5" name="Message" cols="50"></textarea>
<input type="submit" value="Submit" name="submit">
</form>
字母大小写对于 POST
很重要变量,您目前正在使用混合大小写字母。
Subjet
与 subject
不同,原样Message
与 message
不同
关于php - 从数据库查询发送多封电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21493717/