【问题标题】:Can't embed variable in mail function php无法在邮件函数php中嵌入变量
【发布时间】:2015-09-10 12:15:48
【问题描述】:

我想发送不同主题的电子邮件。我有以下代码从数据库中获取邮件主题和消息。

$sql = "SELECT mail_subject, mail_content FROM new_business WHERE business_name = '$biz_name'";

$query = mysqli_query($db, $sql);

while ($row = mysqli_fetch_array($query)) {
        $subject = $row['mail_subject']; //Getting mail subject to send
        $mail_content = $row['mail_content']; //Getting mail content 
                    }
echo $subject; //checking if it gets subject and it surely does.
$to = 'utopian51@gmail.com';

mail($to, $subject, $mail_content);//Mail is not sent

如果主题从数据库中提取数据,则不发送邮件。我已经检查了几次,包括垃圾邮件,还检查了主题是否在将其嵌入邮件功能之前从数据库中获取了任何数据。似乎它得到了正确的数据,但邮件没有发送。

但是当我像这样对主题进行硬编码时:$subject = 'this is a test subject';邮件发送成功。为什么邮件功能不允许我嵌入从数据库获取主题的变量?我需要从数据库发送不同主题的邮件。解决办法是什么?

【问题讨论】:

  • 你确定$subject(当不是硬编码而是从数据库中提取时)是一个有效的编码字符串?
  • 检查您是否正确地从数据库中获取数据。
  • 尝试将while ($row = mysqli_fetch_array($query)) 替换为while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) 并且@b0s3 在他的回答中说缺少' 也可能是原因
  • @OfirBaruch 是的,我成功地从数据库中获取数据
  • @UtkarshVishnoi ,我检查了它,但仍然没有成功

标签: php email


【解决方案1】:

您编写的代码有很多令人困惑的地方。您永远不会在 mysqli_ 调用和 mail() 调用中检查错误情况。您运行一个查询,该查询将丢弃除最后一行(如果有)之外的所有内容。但是,用 mail() 诊断问题的方法不是查看您的收件箱。在超过 99% 的情况下,问题出在 PHP 和 MTA 之间的接口或 MTA 配置本身。

你没有提供任何细节。

我建议你简单地使用:

mail('utopian51@gmail.com', 'test', date('r'));

并开始调试您的 MTA。

您可以独立处理批量电子邮件脚本,只需写入文件而不是调用 mail(),直到两个部分都正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    相关资源
    最近更新 更多