如何使用ReactJS和SendGrid发送电子邮件?

时间:2019-05-13 09:52:50

标签: node.js reactjs sendgrid sendgrid-api-v3

我在SendGrid上具有设置和帐户。我有API密钥和Node.js方法。我正在使用React js创建一个Web应用程序。我想通过SendGrid发送电子邮件。我找不到任何解决方案。请举例说明我的问题。

4 个答案:

答案 0 :(得分:1)

//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);

答案 1 :(得分:0)

因为它是一个前端库,所以用 react 是不可能的,如果你尝试用 react 来实现,你会得到这些错误

---> 拒绝设置不安全的头部“User-Agent”

如果您需要设置这些标头,那么您需要从您的服务器而不是访问者的浏览器发出请求。

因此,这在 React 中是不可能的,您需要为此使用一些后端或 Firebase。

答案 2 :(得分:0)

您可以使用 MailJS,并将 sendgrid 用于事务性服务。 使用起来很简单。

答案 3 :(得分:0)

有多种解决方案可用。

  1. 您可以使用 nodeMailer :https://nodemailer.com/about/
  2. 节点邮件程序甚至还专门为 Sendgrid 编写了传输:https://www.npmjs.com/package/nodemailer-sendgrid-transport
  3. 您可以通过 sendgrid 本身使用节点包:https://github.com/sendgrid/sendgrid-nodejs/tree/main/packages/mail