php - 从数据库查询发送多封电子邮件

标签 php mysql email

您好,我想向数据库中的联系人列表发送电子邮件。代码没有选择数据库。我想知道我能做些什么来解决这个问题。这段代码似乎一直有效,直到到达 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 很重要变量,您目前正在使用混合大小写字母。

Subjetsubject 不同,原样Messagemessage 不同

关于php - 从数据库查询发送多封电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21493717/

相关文章:

php - 如何正确防止未登录的用户访问php页面

mysql - 全选在 golaong gorm 中不起作用

html - 使用墨迹电子邮件框架使图像宽度响应

php - 如何在 Laravel 5.5 中发送多封邮件

php - Magento 使用 getCollection() 获取当前排序和方向

php - 真正的转义字符串和 PDO

php - drupal 7 db_select 选项

mysql - mysql 检索指定距离内的记录

mysql - Xampp Linux : PDOException: SQLSTATE[HY000] [2002] Connection refused in lock_may_be_available() error

excel - 验证在 Outlook 全局地址列表中找到的电子邮件地址的 VBA 代码