0

如果任何术语或逻辑是荒谬的,我深表歉意,我已经因这个问题而陷入困境,我还是新手。我雇主以前的 Web 开发人员在一个静态网站上实施了一个联系表单,该网站利用 AWS 和 Amazon SES 转发电子邮件。我完全不知道这在亚马逊后端是如何工作的,而且我是办公室里唯一与技术相关的人,所以这一切都在我身上。我没有上级可以求助。这个附属的 AWS 账户不属于我的雇主所有 - 这是他以前员工的个人账户,所以我根本无法访问它。我必须自己重新做这件事。

据我所知,提交表单将数据发送到 AWS API,然后触发调用 Lambda 函数的某些东西,然后让 SES 向我的雇主发送一封包含客户信息的电子邮件。

我用谷歌搜索了 AWS+Amazon SES 邮件转发并看到了这个教程:https ://www.freecodecamp.org/news/how-to-receive-emails-via-your-sites-contact-us-form-with- aws-ses-lambda-api-gateway/

这正是正在使用的内容以及我需要实施的内容,但我遇到了问题。

通过教程,我设置了:

  • SES(已验证我的电子邮件地址)
  • IAM 政策
  • IAM 角色,附加到 lambda 并链接到权限策略
  • 创建了 Lambda 函数并对其进行了测试(它成功地从 Lambda 函数仪表板向我发送了电子邮件)
  • API 网关

Lambda 函数和 SES 一样有效。如果没有,我将不会收到测试电子邮件。我按照教程的下一部分要求我使用此代码:

const form = document.querySelector("form");
form.addEventListener("submit", (event) => {
    // prevent the form submit from refreshing the page
    event.preventDefault();

    const { name, email, message } = event.target;

    // Use your API endpoint URL you copied from the previous step
    const endpoint =
        "<https://XXXXXXXXXX.execute-api.us-east-2.amazonaws.com/default/sendContactEmail>";
    // We use JSON.stringify here so the data can be sent as a string via HTTP
    const body = JSON.stringify({
        senderName: name.value,
        senderEmail: email.value,
        message: message.value
    });
    const requestOptions = {
        method: "POST",
        body
    };

    fetch(endpoint, requestOptions)
        .then((response) => {
            if (!response.ok) throw new Error("Error in fetch");
            return response.json();
        })
        .then((response) => {
            document.getElementById("result-text").innerText =
                "Email sent successfully!";
        })
        .catch((error) => {
            document.getElementById("result-text").innerText =
                "An unkown error occured.";
        });
});

显然我复制/粘贴了我的 API 网关而不是 XXXXXXXXX。

我已经在两个环境中对此进行了测试,我的本地机器与 Visual Studio Code 实时服务器和网站。当我在其中任何一个上提交表单时,我都会收到两个单独的错误。

本地 VSC 错误:405 - 方法不允许

网站错误:404 - 未找到

我不确定问题出在哪里,但如果我必须做出有根据的猜测,它必须与 API 做一些事情。我不确定为什么错误不同,我将完全相同的文件上传到 Web 服务器。我难住了。电子邮件没有通过,更糟糕的是,我收到“发生未知错误”消息。

任何帮助,将不胜感激。

编辑:我想出了问题所在。我遵循的教程有由 < 和 > 包围的 API 端点(你可以在上面看到。)那些不应该在那里。就像我提到的那样,这对我来说是新的,所以我用我自己的替换了示例键。我知道网址有问题...

4

0 回答 0