我正在尝试创建联系表格,但是wp_mail()无法正常工作。我没有收到任何消息。我正在使用XAMPP本地主机,我的代码是:
$name = sanitize_text_field($_POST['yourname']);
$email = sanitize_email($_POST['email']);
$subject = sanitize_text_field($_POST['subject']);
$message = sanitize_text_field($_POST['message']);
if ( isset( $_POST['submit']) ) {
//check for empty fields
if ( empty( $name ) || empty( $email ) || empty( $subject ) || empty( $message ) ) {
echo sprintf( '<h5 class="form_erros">%s</h5>', __('Please Fill All Fields!', 'promag') );
}else {
// check if input characters are valid
if ( !preg_match('/[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*/', $name ) ) {
echo sprintf( '<h5 class="form_erros">%s</h5>', __('Please Enter Valid Name!', 'promag') );
}else {
// check if email is valid
if ( !filter_var( $email, FILTER_VALIDATE_EMAIL )) {
echo sprintf( '<h5 class="form_erros">%s</h5>', __('Please Enter Valid E-Mail!', 'promag') );
}else {
// sending the message
$to = get_option('admin_email');
$headers = "From:" . get_option("blogname") . $email . "\r\n";
wp_mail( $to, $subject, $message, $headers, array( '' ) );
echo sprintf( '<h5 class="form_success">%s</h5>', __('Mail Successfully Sent!', 'promag') );
}
}
}
} // endif
答案 0 :(得分:0)
由于各种原因(包括未正确设置SMTP服务器),很难使邮件在localhost上运行。
我建议先使用sendmail进行测试,然后检查它是否有效-如果该方法无效,那么我建议继续使用telnet测试本地SMTP服务器。可能是您遇到网络问题,由于您的互联网提供商,无法访问所需的端口。据我所知,某些ISP专门阻止这些端口以帮助减少垃圾邮件。
一种可能的解决方案是通过php配置文件(php.ini)将PHP配置为使用外部的SMTP服务器,例如Google。
我认为,最好的解决方案是获得一些共享的主机或VPS,然后使用它进行开发。