我用过WP-Mail-SMTP
在我的WordPress安装中设置邮件程序。我通过向我的私人邮件发送电子邮件来测试它。
我现在正在尝试使用wp\\u mail()函数[wp]发送表单数据。
下面是代码。
<?php
if(isset($_POST["button_pressed"])){
// Checking For Blank Fields..
if($_POST["dname"]==""){
echo "Fill All Fields..";
}
else {
$email=$_POST[\'email\'];
$message = $_POST[\'dname\'];
$headers = \'From:\' . "\\r\\n"; // Sender\'s Email
$headers .= \'Cc:\' . "\\r\\n"; // Carbon copy to Sender
// Message lines should not exceed 70 characters (PHP rule), so wrap it
// $message = wordwrap($message, 70);
wp_mail("PRIVATE-EMAIL-ADDRESS", $subject, $message, $headers)
echo "Your mail has been sent successfully ! Thank you for your feedback";
}
?>
HTML表单
<form>
<div class="row">
<div class="form-group">
<div class="col-sm-6"><input class="form-control" type="text" placeholder="ENTER DOG\'S NAME" id="dname" /></div>
<div class="col-sm-6"><input class="form-control" type="text" placeholder="ENTER OWNER\'S NAME" id="name" /></div>
</div>
</div>
<input type="submit" value="SUBMIT" />
<input type="hidden" name="button_pressed" value="1" />
</form>
我试过很多教程,但都没用。你的意见和建议对我很有帮助。谢谢你的时间。
最合适的回答,由SO网友:Rahul Bali 整理而成
在闲逛了几个小时后,我发现了问题。
这是表单而不是PHP。
<div class="col-sm-6">
<input class="form-control" type="text" placeholder="ENTER DOG\'S NAME" id="dname" /></div>
<div class="col-sm-6">
<input class="form-control" type="text" placeholder="ENTER OWNER\'S NAME" id="name" /></div>
id
属性需要为
name
.
Corrected
<div class="col-sm-6">
<input class="form-control" type="text" placeholder="ENTER DOG\'S NAME" name="dname" /></div>
<div class="col-sm-6">
<input class="form-control" type="text" placeholder="ENTER OWNER\'S NAME" name="name" /></div>
</div>
SO网友:Tyler Burden
是的。有很多事情不对。
您必须清理$\\u POST数据,否则会发生非常糟糕的事情。。。
WordPress中字符串最好使用单引号
间距和缩进不符合最佳做法。
你没有用$\\u POST[\'name\']做任何事???您的呼叫$\\u POST[“email”]但未通过示例表单传递,这将导致未定义的变量错误(使用WP DEBUG!!!使其成为真)检查所有$\\u POST值非常重要,而不仅仅是1,因为有人可以操纵表单,或者垃圾邮件发送者可以发送电子邮件,而表单不会丢失POST值,从而再次导致未定义的变量错误。
wp\\U邮件的结尾应该有分号
如果缺少一个右括号,PHP将永远无法工作。
不需要else
如果存在表单篡改,最好使用wp\\u die。如果您不希望用户使用糟糕的UX,那么只需在输入字段中使用所需的HTML标记即可。
输入字段后无需关闭div
最好使用css和本机引导来处理大写字母。
php
<?php
if ( isset( $_POST["button_pressed"] ) ) {
// Checking For Blank Fields..
if ( empty( $_POST[\'dname\'] ) || empty( $_POST[\'name\'] ) ) {
wp_die( __( \'Please fill out all the fields next time.\', \'your-text-domain\' ) );
}
$message = sanitize_text_field( $_POST[\'dname\'] );
// $email = sanitize_email( $_POST["email"] );
$name = sanitize_text_field( $_POST[\'name\'] );
$headers = \'From:\' . "\\r\\n"; // Sender\'s Email
$headers .= \'Cc:\' . "\\r\\n"; // Carbon copy to Sender
// Send mail
wp_mail( \'PRIVATE-EMAIL-ADDRESS\', $subject, $message, $headers );
// Show Message and hide the form
_e( \'Your mail has been sent successfully ! Thank you for your feedback.\', \'your-text-domain\' );
echo \'<style>#contact-form{ display: none; }</style>\';
}
?>
和html标记
<form action="" id="contact-form" method="post">
<div class="row">
<div class="form-group">
<div class="col-sm-6">
<input class="form-control text-uppercase" type="text" placeholder="<?php _e( \'Enter dogs\\\'S name\', \'your-text-domain\' ); ?>" name="dname" required>
<div class="col-sm-6">
<input class="form-control text-uppercase" type="text" placeholder="<?php _e( \'Enter owner\\\'s name\', \'your-text-domain\' ); ?>" name="name" required>
</div>
</div>
</div>
<input type="submit" value="SUBMIT" />
<input type="hidden" name="button_pressed" value="1" />
</form>