0

我正在尝试制作联系表格,但 wp_mail() 不起作用。我没有收到任何消息。我正在使用 XAMPP localhost,我的代码是:

 $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') );
    }
  }
}

}//万一

4

1 回答 1

1

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

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

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

在我看来,最好的解决方案是获取一些共享主机或 VPS 并使用它来进行开发。

于 2019-01-18T22:51:28.637 回答