我在WordPress中使用PHPMailer发送邮件。为此,我有3个文件:
contacts.php - 带有html格式的文件:
<?php
/*
* Template Name: Contacts
*/
get_header(); ?>
<div class="container page">
<h2>Напиши нам</h2>
<div class="row">
<div class="col-lg-5">
<form action="<?php bloginfo('template_url');?>/mailer.php" method="post">
<label for="fname">Имя*</label>
<input type="text" class="form-control" id="fname" name="first-name" required>
<label for="tel">Телефон*</label>
<input type="tel" class="form-control" id="tel" required name="phone">
<label for="tel">E-mail</label>
<input type="tel" class="form-control" id="email" name="email">
<label for="">Сообщение*</label>
<textarea required class="form-control" rows="8" name="msg"></textarea>
<button type="submit" class="btn btn-success" id="btn-contacts">Отправить</button>
</form>
</div>
<div class="col-lg-7">
</div>
</div>
</div>
<?php get_footer(); ?>
mailer.php - 表单的处理程序:
<?php
$fname = $_POST["first-name"];
$phone = $_POST["phone"];
$email = $_POST["mail"];
$msg = $_POST["msg"];
require_once("lib/phpmailer/PHPMailerAutoload.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->FromName = "SomeName";
$mail->Host = "smtp.yandex.ru";
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->CharSet = 'UTF-8';
$mail->SMTPAuth = true;
$mail->Username = "username";
$mail->Password = "password";
$mail->AddAddress("someaddress@yandex.ru", "Name");
$mail->WordWrap = 50;
$mail->SetFrom("someaddress@ya.ru", "OwnerName");
$mail->IsHTML(true);
$mail->Subject = $fname;
$body = file_get_contents("test.php");
$mail->MsgHTML($body);
if($mail->Send())
echo "Everything is okay";
else
echo "Error!";
?>
test.php - 字母的html标记:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<h5>First Name of Person:</h5>
<?php
echo $fname; //how can I get this variable value???
?>
</body>
</html>
我遇到了一个问题。 我怎么能得到这个? (请参阅第三个片段和内部评论)。提前谢谢!
答案 0 :(得分:1)
您可以将其存储在POST
请求的会话中,然后显示它。此外,在WP会话中默认情况下不启用。你需要像这样启用它们。
if (!session_id()) {
session_start();
}
$_SESSION['firstName'] = $_POST['first-name']; // Store
<?php echo $_SESSION['firstName']; // Display ?>
答案 1 :(得分:0)
建议使用herdoc语法,因为file_get_contents不会自动转换VARS,除非你对它运行eval()(我认为)。所以,只需包含(&#39; test.php&#39;);其中包含......
$body = <<<EOD
....
<h5>First Name of Person:</h5>
$fname
....
EOD;
答案 2 :(得分:0)
您可以使用Heredoc语法来定义html文本以及变量。 file_get_contents只读取文件的文本源并存储在变量中。您必须在需要的地方包含此文件并使用heredoc语法:
$body = <<<HTML
<h5>First Name of Person:</h5>
{$fname}
HTML;
您可以使用一些模板标记定义test.php。使用一些模板变量并将值替换为表单处理代码中的实际变量。 在test.php中,使用
<h5>First Name of Person:</h5>
{first_name}
然后在使用file_get_contents获取内容后,将模板变量替换为从POST接收的值。
$body = file_get_contents("test.php");
$body = str_replace("{first_name}",$fname,$body);
对要替换的所有值执行此操作。