使用Netlify lambda函数从GatsbyJS网站发送电子邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Netlify lambda函数从GatsbyJS网站发送电子邮件相关的知识,希望对你有一定的参考价值。
我正在按照本教程https://dev.to/char_bone/using-netlify-lambda-functions-to-send-emails-from-a-gatsbyjs-site-3pnb进行所有设置,但是在终端中出现以下错误。我可以从此处https://www.gatsbyjs.org/blog/2018-12-17-turning-the-static-dynamic/获得可用于lambda函数的hello world应用程序,这是开始第一个教程的先决条件。
RangeError [ERR_HTTP_INVALID_STATUS_CODE]: Invalid status code: undefined
这里是带有表单的代码。您也可以在下面查看整个回购。
import React from 'react'
import HelmetDatoCms from 'gatsby-source-datocms'
import graphql from 'gatsby'
import Layout from "../components/layout"
export default ( data ) =>
const [formState, setFormState] = React.useState(
name: "",
email: "",
subject: "",
message: "",
)
const onChange = (e) =>
setFormState(...formState, [e.target.name]: e.target.value );
const submitForm = async (e) =>
e.preventDefault();
console.log("test");
try
const response = await fetch("/.netlify/functions/sendmail",
method: "POST",
body: JSON.stringify(formState),
)
if (!response.ok)
console.log(response);
return
console.log("success email");
catch(e)
console.log("error");
return(
<Layout>
<article className="sheet">
<HelmetDatoCms seo=data.datoCmsPricing.seoMetaTags />
<section className="left-package-details">
tests
<div className="App">
<form onSubmit=submitForm>
<label>
Name
<input
type="text"
name="name"
value=formState.name
onChange=onChange
/>
</label>
<label>
Email
<input
type="email"
name="email"
value=formState.email
onChange=onChange
/>
</label>
<label>
Subject
<input
type="textarea"
name="subject"
value=formState.subject
onChange=onChange
/>
</label>
<label>
message
<input
type="text"
name="message"
value=formState.message
onChange=onChange
/>
</label>
<button type="submit">Submit</button>
</form>
</div>
)
更新
现在基于Pierre的答案,我得到了500错误
Request from ::ffff:127.0.0.1: POST /sendmail
Response with status 500 in 3 ms.
我想知道它是否与从本地主机POST'有关,至少我知道它是sendgrid现在给我错误。
我看了npm调试部分,看到了这段代码,不确定确切的位置吗?
const
classes:
Mail,
,
= require('@sendgrid/helpers');
const mail = Mail.create(data);
const body = mail.toJSON();
console.log(body);
控制台错误
Response type: "basic", url: "http://localhost:8000/.netlify/functions/sendmail", redirected: false, status: 500, ok: false, …
type: "basic"
url: "http://localhost:8000/.netlify/functions/sendmail"
redirected: false
status: 500
ok: false
statusText: "Internal Server Error"
headers: Headers
body: (...)
bodyUsed: false
__proto__: Response
第二次更新
我现在在终端中遇到以下错误实际上,我什至不需要连抄送,我想这是说我没有价值,所以也许我的env变量SENDGRID_TO_EMAIL没有通过?] >
Provide at least one of to, cc or bcc
现在,如果我添加这样的抄送
const msg = to: SENDGRID_TO_EMAIL, cc:"email@email.com", from: email, subject: subject ? subject : 'Contact Form Submission', html: body, ;
然后我收到
Unauthorized
消息
对于我的环境变量,我的根目录下有一个.env文件,其中包含以下内容
SENDGRID_API_KEY=SG.longsting SENDGRID_TO_EMAIL=myemail@email.com
这是应该获取环境变量的行
const SENDGRID_API_KEY, SENDGRID_TO_EMAIL = process.env
我正在按照本教程https://dev.to/char_bone/using-netlify-lambda-functions-to-send-emails-from-a-gatsbyjs-site-3pnb进行了所有设置,但得到了以下内容我的终端错误。我...
看着your source code,我很确定sendgrid send
函数会引发异常,并且您不能正确处理它:
以上是关于使用Netlify lambda函数从GatsbyJS网站发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
通过 github.io 渲染静态网页不起作用 - 对于使用 gatsby 创建的网站/从 github repo 托管在 netlify 上的网站
卡在构建 gatsby-starter-netlify-cms
将 Gatsby + Contentful 网站部署到 Netlify
Gatsby + contentful + Netlify 的私人/登录部分