PHP-如何向电子邮件正文添加变量
我有一个PHP脚本,可以从MySQL数据库导入数据,并通过while循环向上述人员发送电子邮件。除了我不能在电子邮件正文中使用变量值(而是打印出变量的名称)之外,一切正常。例如,如果我写“$first_name”,我希望电子邮件的正文显示“Johan”,如果这是数据库中条目的名称PHP-如何向电子邮件正文添加变量,php,mysql,email,Php,Mysql,Email,我有一个PHP脚本,可以从MySQL数据库导入数据,并通过while循环向上述人员发送电子邮件。除了我不能在电子邮件正文中使用变量值(而是打印出变量的名称)之外,一切正常。例如,如果我写“$first_name”,我希望电子邮件的正文显示“Johan”,如果这是数据库中条目的名称 if (isset($_POST['submit'])){ // About database $user = "user"; $password
if (isset($_POST['submit'])){
// About database
$user = "user";
$password = "password";
$host = "host";
$dbase = "dbase";
$table = "table";
// Connection to database
$dbc= mysqli_connect($host,$user,$password, $dbase)
or die("Unable to select database");
// Retrieve emails from database
$country = $_POST['country'];
$query= "SELECT email, firstname FROM $table WHERE country = '$country'";
$result= mysqli_query ($dbc, $query)
or die ('Error querying database.');
// Send the email
while ($row = mysqli_fetch_array($result)) {
// Write $first_name for recipients name
$first_name = $row['firstname'];
$last_name = $row['lastname'];
$email = $row['email'];
// About the email
$from = 'info@email.com';
$subject = $_POST['heading'];
$body = $_POST['message'];
$speed = $_POST['speed'];
mail($email, $subject, $body, 'From:' . $from);
echo 'Email sent to: ' . $email. '<br>';
// Delay for speed regulation
sleep(3600/$speed);
}
}
mysqli_close($dbc);
或在此:
$first_name = $row['firstname'];
$last_name = $row['lastname'];
$email = $row['email'];
在您的行中
$query=“从$table中选择email,firstname,其中country='$country'”
;您还必须添加lastname 在您的行中$query=“从$table中选择email,firstname,其中country='$country'
;您还必须添加lastname 假设$\u POST['message']的内容看起来像
Dear $first_name,
Greetings, I am a prince from...
PHP不会替换这个变量。这只是它在内联字符串中所做的事情(当使用双引号时)
你可以用十几种不同的方法来处理这件事。。。例如,您可以:
$body = str_replace('$first_name', $first_name, $body);
注意单引号的使用。这是为了防止PHP使用$first\u name的值,而使用文字字符串“$first\u name”。假设$\u POST['message']的内容类似于
Dear $first_name,
Greetings, I am a prince from...
PHP不会替换这个变量。这只是它在内联字符串中所做的事情(当使用双引号时)
你可以用十几种不同的方法来处理这件事。。。例如,您可以:
$body = str_replace('$first_name', $first_name, $body);
注意单引号的使用。这是为了防止PHP使用$first\u name的值,而使用文字字符串“$first\u name”。
$body=$\u POST['message']代码>您正在用发布值的内容填充正文,而不是从数据库中获取的任何内容。如果您使用的是mysqli函数,那么出于安全目的,您也可以使用mysqli函数,而不是在查询中随意转储变量,这有点重要。我从一个网站发送电子邮件,在那里我把信息写在一个输入字段(正文)中。我希望能够在正文中写$first_name,并因此得到“John”。这是可能的吗?幸运的是,您的消息体没有被评估为php,因此如果您想在那里替换文本,您需要手动使用stru replace()
。我建议创建一个定义的可替换标记列表,例如{firstName}
,{lastName}
,etc并使用jeroen上述函数将其替换为适当的值。$body=$\u POST['message']代码>您正在用发布值的内容填充正文,而不是从数据库中获取的任何内容。如果您使用的是mysqli函数,那么出于安全目的,您也可以使用mysqli函数,而不是在查询中随意转储变量,这有点重要。我从一个网站发送电子邮件,在那里我把信息写在一个输入字段(正文)中。我希望能够在正文中写$first_name,并因此得到“John”。这是可能的吗?幸运的是,您的消息体没有被评估为php,因此如果您想在那里替换文本,您需要手动使用stru replace()
。我建议创建一个定义的可替换标记列表,例如{firstName}
,{lastName}
,等,并使用jeroen提到的函数将其替换为适当的值。“firstname”甚至还不起作用,只有“email”。问题一定在其他地方。“firstname”甚至不起作用,只有“email”。问题一定在其他地方。