为什么wp_mail()在本地主机上不起作用?

时间:2019-01-18 21:56:11

标签: php wordpress

我正在尝试创建联系表格,但是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

1 个答案:

答案 0 :(得分:0)

由于各种原因(包括未正确设置SMTP服务器),很难使邮件在localhost上运行。

我建议先使用sendmail进行测试,然后检查它是否有效-如果该方法无效,那么我建议继续使用telnet测试本地SMTP服务器。可能是您遇到网络问题,由于您的互联网提供商,无法访问所需的端口。据我所知,某些ISP专门阻止这些端口以帮助减少垃圾邮件。

一种可能的解决方案是通过php配置文件(php.ini)将PHP配置为使用外部的SMTP服务器,例如Google。

我认为,最好的解决方案是获得一些共享的主机或VPS,然后使用它进行开发。