如何使Strapi电子邮件插件显示在配置下拉列表中

时间:2019-04-21 10:28:43

标签: strapi

我正在尝试将Strapi v3.0.0-alpha.19服务器配置为能够发送电子邮件,特别是用于重置忘记的密码。很难找到足够的文档来完成此操作,但是我在questions like this one的答案中读到的是我需要安装提供程序包,例如strapi-provider-email-nodemailer,然后设置SMTP服务器(具有透明性的指令)。但是,当我将包安装在project-folder / strapi中,然后重新加载http://localhost:1337/admin/plugins/email/configurations/development时,提供程序的下拉列表仍只包含默认提供程序Sendmail。

我尝试在Docker容器中重建Strapi API,但这没有任何区别。

我希望刷新页面后或者至少在重建API之后,Nodemailer会出现在下拉列表中,但这没有发生。为了将Nodemailer指定为我的电子邮件提供商,我需要采取什么步骤?

2 个答案:

答案 0 :(得分:1)

在较新的Strapi版本中,您也必须在电子邮件插件设置中手动更改电子邮件提供者,因为电子邮件提供者的下拉列表不再可用(https://github.com/strapi/strapi/pull/6195)。经过数小时的研究,我只是用Amazon-ses做到了,它奏效了。不知道这是否是正确的方法,但这肯定是我在很长一段时间后设法找到的唯一方法。

转到api/node_modules/strapi-plugin-email/config/settings.js,然后将提供程序更改为所需的提供程序。

您可能应该这样更改自己的内容:

module.exports = {
  provider: 'nodemailer',
  providerOptions: {},
  settings: {
    defaultFrom: 'Strapi <no-reply@strapi.io>',
  },
};

答案 1 :(得分:0)

考虑到您同时添加了strapi-email-nodemailerstrapi-provider-email-nodemailer,下一步应该是添加配置。

要添加配置,请在plugin.js中添加以下代码。如果您没有plugin.js,请在根config文件夹中创建一个。

module.exports = ({ env }) => ({
  email: {
    provider: "nodemailer",
    providerOptions: {
      nodemailer_default_from: "default_from_email@example.com",
      nodemailer_default_replyto: "default_replyto_email@example.com",
      host: "smtp.gmail.com, // Add your smtp host over here
      port: "995", // Add port number
      password: "<below-email-password>,
      username: "<email-address>",
      authMethod: "SMTP", // Auth method
    }
  },
});

您可以将上述配置保存到环境文件中,然后从那里使用它。

要以编程方式发送电子邮件,请在控制器中添加以下代码:

await strapi.plugins['email'].services.email.send({
  to: 'mail@example.com', // email recipient
  from: 'sender@example.com', // email sender
  subject: 'Email subject line', 
  text: 'Email body should come here'
});