我在 SendGrid 上有设置和帐户。我已经获得了 API 密钥和 Node.js 方法。我正在使用 React js 创建一个 Web 应用程序。我想通过 SendGrid 发送电子邮件。我找不到任何解决方案。请举例说明我的问题。
如何使用 ReactJS 和 SendGrid 发送电子邮件?
IT技术
node.js
reactjs
sendgrid
sendgrid-api-v3
2021-05-04 00:37:35
4个回答
//Form.js
class Form extends React.Component {
constructor() {
super();
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(event) {
event.preventDefault();
const data = new FormData(event.target);
fetch('/api/form-submit-url', {
method: 'POST',
body: data,
});
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<label htmlFor="username">Enter username</label>
<input id="username" name="username" type="text" />
<label htmlFor="email">Enter your email</label>
<input id="email" name="email" type="email" />
<label htmlFor="birthdate">Enter your birth date</label>
<input id="birthdate" name="birthdate" type="text" />
<button>Send data!</button>
</form>
);
}
}
//index.js
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
to: test@example.com',
from: 'test@example.com',
subject: 'Sending with SendGrid is Fun',
text: 'and easy to do anywhere, even with Node.js',
html: '<strong>and easy to do anywhere, even with Node.js</strong>',
};
sgMail.send(msg);
React 是不可能的,因为它是一个前端库,如果你尝试使用 react 来实现,你会得到这些错误
---> 拒绝设置不安全的标头“User-Agent”
如果您需要设置这些标头,那么您需要从您的服务器而不是访问者的浏览器发出请求。
所以这是不可能的,你需要为它使用一些后端或火力。
您可以使用MailJS,并将 sendgrid 用于事务服务。它很容易使用。
有多种解决方案可用。
- 您可以使用 nodeMailer :https ://nodemailer.com/about/
- 节点邮件程序甚至专门为 Sendgrid 编写了传输:https ://www.npmjs.com/package/nodemailer-sendgrid-transport
- 您可以通过 sendgrid 本身使用节点包:https : //github.com/sendgrid/sendgrid-nodejs/tree/main/packages/mail