Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有自定义Sendgrid控制器代码的Strapi Beta版电子邮件_Javascript_Node.js_Reactjs_Strapi - Fatal编程技术网

Javascript 带有自定义Sendgrid控制器代码的Strapi Beta版电子邮件

Javascript 带有自定义Sendgrid控制器代码的Strapi Beta版电子邮件,javascript,node.js,reactjs,strapi,Javascript,Node.js,Reactjs,Strapi,Strapi beta的结构改变了插件的架构,删除了/plugins目录,插件现在保存在/node_modules目录中。我正在尝试编写一些自定义代码,以便在下订单后发送确认电子邮件。在以前版本的Strapi中,电子邮件插件目录如下: /server/plugins/email/controller 在此目录中,编写了以下代码,这些代码在发送控制器的alpha中工作: 我们对此作出评论: //wait.strapi.plugins.email.services.send(选项,配置) 然后,此代

Strapi beta的结构改变了插件的架构,删除了/plugins目录,插件现在保存在/node_modules目录中。我正在尝试编写一些自定义代码,以便在下订单后发送确认电子邮件。在以前版本的Strapi中,电子邮件插件目录如下:

/server/plugins/email/controller

在此目录中,编写了以下代码,这些代码在发送控制器的alpha中工作:

我们对此作出评论:
//wait.strapi.plugins.email.services.send(选项,配置)

然后,此代码将用于模块内部的发送控制器。导出曾经存在的电子邮件控制器

let options = ctx.request.body;

   try {
   // send email to user
   await strapi.plugins['email'].services.email.send({
      to: options.to,
      from: 'test@example.com',
      subject: options.subject,
      text: options.text,
      html: options.html
   })
} catch (err) {
   return ctx.badRequest(null, err);
}

   // Send 200 'ok;
   ctx.send({});
好的,这是服务器端的Strapi发送控制器。。。现在在客户上,在订单承诺返回后,我们发出另一封点击Strapi API的确认承诺电子邮件:

await.strapi.request('POST', '/email', { 
   data: {
      to: confirmationEmailAdress,
      subject: "Order Confirmation',
      text: 'Your order has been processed',
      html: '<b>Expect your stuff to arrive broken. Thanks.</b>'
   }
});
现在,在客户端中,我使用带有React的承诺呼叫我们的电子邮件分机,如下所示:

await strapi.request('POST', '/email', {
        data: {
          to: confirmationEmailAddress,
          subject: `Order Confirmation - South of Sleep ${new Date(Date.now())}`,
          text: 'Your order has been processed',
          html: '<bold>Except your stuff to be broken upon arriving</bold>'
        }
      });
wait strapi.request('POST','/email'{
数据:{
致:确认邮件地址,
主题:`Order Confirmation-South of Sleep${new Date(Date.now())}`,
文本:“您的订单已处理”,
html:“除非你的东西一到就坏了”
}
});
它起作用了!电子邮件是从Strapi发送的,我看到控制器中的信息是电子邮件的一部分。问题出在哪里

客户端中的承诺是try/catch的一部分,在发送电子邮件后,它返回404,因为它无法找到
/email
作为路由。所以,我不明白它为什么工作,并找到扩展控制器的电子邮件,发射电子邮件,但返回404的路线


我从客户端错误地调用了扩展控制器。

现在您必须按照自定义文档进行操作。 这是医生

  • 您必须按照要更新的文件路径创建文件
  • 然后只复制所需的函数
  • 最后,添加电子邮件服务呼叫

谢谢你,吉姆。除了从客户机返回404的post/url调用之外,我的一切都正常工作。扩展电子邮件控制器被调用,电子邮件被发送并工作,但由于某些原因,/email url返回404。我将把上面的代码放在我的问题中,因为你的控制器没有返回任何数据。只需添加一个
ctx.send({ok:true})
或类似的东西。非常好。谢谢你,吉姆。很好!
await strapi.request('POST', '/email', {
        data: {
          to: confirmationEmailAddress,
          subject: `Order Confirmation - South of Sleep ${new Date(Date.now())}`,
          text: 'Your order has been processed',
          html: '<bold>Except your stuff to be broken upon arriving</bold>'
        }
      });