我正试图在wordpress网站上使用PHP mail()发送电子邮件。 我创建了一个空页http://www.exam-vision.com/request-flip-up-instructions,该模板包含如下所示的php代码。当我发布数据时,isset($ _ REQUEST ['email'])为false,而我可以在firebug中正确发布数据。什么可能是错的?
感谢
<?php
if (isset($_REQUEST['email']))
//if "email" is filled out, send email
{
//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail( "<someemail>", "Subject: $subject",
$message, "From: $email" );
echo "Thank you for using our mail form";
}
else
//if "email" is not filled out, display the form
{
echo "<form method='post' action='http://www.exam-vision.com/request-flip-up-instructions'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>
答案 0 :(得分:2)
而不是使用$ REQUEST,只需使用$ _POST,因为页面已发布给自己,并确保检查it's set或empty是否wp_mail。而不是使用PHP的mail()函数使用WordPress'CformsII函数。
或者,您也可以选择使用插件来完成此操作。 Gravity Forms和{{3}}(高级插件)只是几个例子。我使用过CformsII,它非常广泛,并且功能丰富,可用于免费插件。
答案 1 :(得分:0)
两件事:要使用您当前的表单,您应该1)与您的主机核实是否需要使用smtp并进行身份验证而不是使用php邮件,2),清理您的输入:PHP Secure E-mail. < / p>
如果你想使用WP插件代替邮件 - 这比构建你自己的表单有许多优点 - 你可能还需要使用WP Mail SMTP « WordPress Plugins来使用smtp而不是php邮件,因为你的主机可能正在限制使用php邮件。
答案 2 :(得分:-1)
尝试更改
<input type="email" name="email" />
类似
<input type="email" name="my_theme_email" />
对所有字段执行相同操作听起来像发送表单数据时WordPress会保留一些名称。我遇到了同样的问题,我就这样解决了。之后使用POST方法,并可能创建一个do_action()来添加字段验证。并使用wp_mail
发送电子邮件,$_POST['']