Send mail with Nuxt trough Sendgrid

帅比萌擦擦* 提交于 2021-02-08 08:49:12

问题


I have a simple vuetify contact form and I want to send this forms by email. I have tried to use a method to send the email, but it does not work, because its on client side. So I get CORS issues.

Here's my code:

async send() {
  if (this.$refs.form.validate()) {
    try {
      const sgMail = require("@sendgrid/mail");
      sgMail.setApiKey(process.env.SENDGRID_API_KEY);
      const msg = {
        to: "test@example.com",
        from: "me@mydomain.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);
    }
  }
}

Is Express (or an other backend) required? Is there a way to make it work using a middleware?

EDIT

Apparently, it's just not possible: https://github.com/sendgrid/sendgrid-nodejs/issues/730


回答1:


The CORS policy from Sendgrid does not allow you to use their API from the browser (The 'Access-Control-Allow-Origin' header has a value 'https://sendgrid.api-docs.io').

Quoted from https://sendgrid.com/docs/for-developers/sending-email/cors/ :

In SendGrid's case, we do not allow our customers to make a browser-based call to our v3/mail/send endpoint. (...) You can create a server-based application, which will protect your API keys from being released to the world. Languages like NodeJS, PHP, Ruby, Python, C#, Go, and Java, and others can be implemented to make calls to the API from the security of a locked down server environment.

You have to send the email from a server, which is a good thing since your API Key would be exposed by the browser otherwise.

If you are using Nuxt in SSR mode (with Node running), I guess you could create a "Server Middleware" ( https://nuxtjs.org/api/configuration-servermiddleware ), for example with a path like "/api/mail", that will send the email.

If you are using nuxt-generate to create a static site, you can use a "function as a service", with something like "https://webtask.io/", to create a small node script; that you can trigger by url from your client to send the email.



来源:https://stackoverflow.com/questions/53559197/send-mail-with-nuxt-trough-sendgrid

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!