PHP - 基于数据库查询发送电子邮件至电子邮件地址

标签 php mysql database email

我正在尝试创建对广告表单的回复,其中用户点击广告并可以发送电子邮件,但是我不希望用户实际看到他们将其发送到哪个地址,而是可以将电子邮件地址根据广告用户名从数据库中获取

我已经尝试过这段代码,但似乎无法让它工作,任何帮助表示赞赏!

$username = $_SESSION['username'];

$sql = "SELECT * FROM user WHERE username=:username";
$q = $conn->prepare($sql);
$q->bindParam(':username', $username, PDO::PARAM_STR);
$q->execute();
$row = $q->fetch(PDO::FETCH_ASSOC);

$email1 = $row['email']; 

 $to='$email1';
$messageSubject='Message subject';
$confirmationSubject='Confirmation message subject';
$confirmationBody="Confirmation message body";
 $email='';
  $body='';
$displayForm=true;
if ($_POST){
$email=stripslashes($_POST['email']);
$body=stripslashes($_POST['body']);
// validate e-mail address
$valid=eregi('^([0-9a-z]+[-._+&])*[0-9a-z]+@([-0-9a-z]+[.])+[a-z]{2,6}$',$email);
$crack=eregi("(\r|\n)(to:|from:|cc:|bcc:)",$body);
if ($email && $body && $valid && !$crack){
  if (mail($to,$messageSubject,$body,'From: '.$email."\r\n")
      && mail($email,$confirmationSubject,$confirmationBody.$body,'From: '.$to."\r\n")){
    $displayForm=false;

最佳答案

不要使用 ereg 函数。它们已被弃用并且存在严重问题。使用预浸料代替。

要回答你的问题,这应该很简单

$to = $email1;

或者更好的是,跳过该阶段并执行

$email1 = $row['email1'];

使用 ' 单引号,您将强制 PHP 将 $email1 视为字符串,而不是变量。因此您尝试发送到名为 $email1 的地址,而不是 $email1 变量的内容。

关于PHP - 基于数据库查询发送电子邮件至电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675517/

相关文章:

javascript - 根据用户年龄显示div

php - MySQL 查询连接

MySQL第二个基于外键的自增字段

mysql - 具有多列子查询的SQL笛卡尔积,未知列问题

php - MySQL PHP - UTF8数据插入编码

java - 如何使用两个表在SQLite数据库中存储多个数据?

php - stackoverflow 像解析器正则表达式? _em_ *粗体* 在 php 中

php - 在 PHP 5.6.12 中启用 DOTNET COM 扩展

php - 如何从不同的表中选择实体?

mysql - 将 AUTO_INCRMENT id 列添加到大型 MySQL 表时出现问题