当前位置: 首页 > 知识库问答 >
问题:

405 Ajax POST/Nginx配置错误

丌官寒
2023-03-14

我正在尝试用Ajax表单和swiftmailer发送电子邮件。它在本地工作,但在生产中不起作用。

当contact_me.php不是从表单而是显式写入的参数时,电子邮件甚至是从服务器发送的,所以我认为Swiftmailer正在工作。

contact_me.js

// Contact Form Scripts

$(function() {

    $("#contactForm input,#contactForm textarea").jqBootstrapValidation({
        preventSubmit: true,
        submitError: function($form, event, errors) {
            // additional error messages or events
        },
        submitSuccess: function($form, event) {
            event.preventDefault(); // prevent default submit behaviour
            // get values from FORM
            var name = $("input#name").val();
            var email = $("input#email").val();
            var phone = $("input#phone").val();
            var message = $("textarea#message").val();
            var firstName = name; // For Success/Failure Message
            // Check for white space in name for Success/Fail message
            if (firstName.indexOf(' ') >= 0) {
                firstName = name.split(' ').slice(0, -1).join(' ');
            }
            $.ajax({
                url: "././mail/contact_me.php",
                type: "POST",
                data: {
                    name: name,
                    phone: phone,
                    email: email,
                    message: message
                },
                dataType: "text",
                cache: false,
                success: function() {
                    // Success message       
                },
                error: function() {
                    // Fail message                    
                },
            });
        },
        filter: function() {
            return $(this).is(":visible");
        },
    });

    $("a[data-toggle=\"tab\"]").click(function(e) {
        e.preventDefault();
        $(this).tab("show");
    });
});


/*When clicking on Full hide fail/success boxes */
$('#name').focus(function() {
    $('#success').html('');
});

contact_me.php

<?php
// Autoload for swiftmailer
require_once '../vendor/autoload.php';

// Check for empty fields
if(empty($_POST['name'])      ||
   empty($_POST['email'])     ||
   empty($_POST['phone'])     ||
   empty($_POST['message'])   ||
   !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
   {
   echo "No arguments Provided!";
   return false;
   }


$name = strip_tags(htmlspecialchars($_POST['name']));
$email_address = strip_tags(htmlspecialchars($_POST['email']));
$phone = strip_tags(htmlspecialchars($_POST['phone']));
$message = strip_tags(htmlspecialchars($_POST['message']));

// Create the email and send the message
$email_subject = "TrustPair nouveau contact :  $name";
$email_body = "New form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$message";

// Add here swiftmailer code, need to return true
// Create the Transport
$transport = (new Swift_SmtpTransport('mail.gandi.net', 465, "ssl"))
  ->setUsername('name@domain.com')
  ->setPassword('password')
;

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create the message
$message = (new Swift_Message())
    // Give the message a subject
    ->setSubject($email_subject)
    // Set the From address with an associative array
    ->setFrom(['noreply@domain.com' => 'Domain no reply'])
    // Set the To addresses
    ->setTo(['firstmailto@gmail.com', 'secondmailto@gmail.com'])
    // Give it a body
    ->setBody($email_body)
    ;

// Send the message
$result = $mailer->send($message);
echo $result;
// result is equal to the nbr of message recipients

if ($result == 0) {
    return false;
} else {
    return true;
}


?>

共有1个答案

南门向荣
2023-03-14

Nginx服务器不允许使用静态页面(即.*.html)进行POST请求。

有黑客来处理这个问题。在我的例子中,它修复了405错误,但电子邮件没有发送。

解决办法是改变索引。要索引的html。php,请确保调整您的Nginx配置以反映这些更改。

 类似资料:
  • 已解决,TMD,chatgpt 的毛病

  • 配置 NGINX NGINX 相关的配置可以单独写一本书,不过一开始,我们不会用到太多的配置选项。这本书主要介绍搭建一个 LEMP 环境的流程,你可以在相关资源里找到扩展学习的课程与资料。 先去看一下 NGINX 配置文件所在地。 查看 NGINX 的配置: cd /etc/nginx ls 返回: conf.d koi-utf mime.types nginx.conf

  • 本文向大家介绍Nginx常见的错误配置举例,包括了Nginx常见的错误配置举例的使用技巧和注意事项,需要的朋友参考一下 Nginx是当前主流的Web服务。 以下是一些最常见的错误配置。 Missing root location root指令指定Nginx的根目录。 在上面的示例中,根目录是/etc/nginx,这意味着我们可以访问该目录下的文件。 上面的配置没有/的位置(location / {

  • 主要内容:1. 设置错误日志,2. 设置访问日志,3. 启用条件日志记录,4. 日志记录到Syslog本节介绍如何在NGINX中配置日志记录错误和处理的请求。在本文章中将涉及以下内容 - 设置错误日志 设置访问日志 启用条件日志记录 日志记录到Syslog 1. 设置错误日志 NGINX将遇到的不同严重性级别问题的信息写入错误日志。 指令将日志记录设置为特定文件,或,并指定要记录的消息的最低级别。 默认情况下,错误日志位于(绝对路径取决于操作系统和安装),并记录来自所指定的所有严重级别的消息。

  • NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。 默认情况下,文件名为并放在目录中(对于开源NGINX产品,位置取决于用于安装NGINX和操作系统的软件包系统,它通常位于或。) 配置文件由指令及其参数组成。 简单(单行)指令各自以分号结尾。 其他指令作为“容器”,将相关指令组合在一起,将其包围在花括号()中。 以下是简单指令的一些示例。 为了使配置更易于维护,建议您将其拆分

  • 那么... 我在端口8080的服务器上运行了一个节点应用程序,我正在尝试使用NGINX和CloudFlare使其能够通过SSL工作。请注意以下几点。。。 我的主机正在运行Ubuntu 16.04 LTS ...我以前的NGINX配置看起来像。。。 ...现在看起来。。。 ...我遵循了这里的例子和它在这里提供的链接,我怀疑上面的一切都是必需的(我是一个极简主义者)。每当我运行时,我仍然会在未指定s